【问题标题】:QuerySet in Django - returns exceptionDjango中的QuerySet - 返回异常
【发布时间】:2015-04-15 17:01:40
【问题描述】:

我试图了解查询在 Django 上的工作原理,我遵循了它不起作用的教程我不确定我做错了什么。

当我跑步时

BeneficientePagar.objects.filter(nome__contains="Joao Pedro") 

返回

"Choices are %s" %s (name, ",".join(available))) django.core.exceptions.FieldError: Cannot resolve keyword "nome into field. Choices are: ID, beneficiente, beneficiente_id,join , join_id, moeda

from django.db import models

# Create your models here.

class Moeda(models.Model):
    moeda_ficticia = models.FloatField()

class Join(models.Model):
    nome = models.CharField(max_length=150)
    nascimento = models.DateField()
    cpf = models.IntegerField(primary_key=True)
    endereco = models.CharField(max_length=150)
    email = models.EmailField()

    def __str__(self):
        return self.nome

class Beneficiente(models.Model):
    ID = models.AutoField(primary_key=True)
    nome = models.CharField(max_length=150)
    CNPJ = models.IntegerField(max_length = 10)
    def __str__(self):
        return self.nome

class Favores(models.Model):
    ID = models.AutoField(primary_key=True)
    favor = models.CharField(max_length=150)
    dataInserido = models.DateField()
    usuarios = models.ForeignKey(Join)
    def __str__(self):
        return self.favor

class BeneficientePagar(models.Model):
    ID = models.AutoField(primary_key=True)
    moeda = models.IntegerField()
    beneficiente = models.ForeignKey(Beneficiente)
    join = models.ForeignKey(Join)
    def __str__(self):
        return self.ID

提前致谢

【问题讨论】:

    标签: django django-queryset


    【解决方案1】:

    如果使用 BeneficientPager,你需要这样做

    BeneficientePagar.objects.filter(beneficient__nome__contains="Joao Pedro") 
    

    【讨论】:

      【解决方案2】:

      您收到错误是因为nomeBeneficiente 上的一个字段,而不是BeneficientePagar

      你可以这样做

      Beneficiente.objects.filter(nome__contains="Joao Pedro") 
      

      这将返回一个Beneficientes 的查询集。或者如果需要BeneficientePagar可以通过外键查询。

      BeneficientePagar.objects.filter(beneficiente__nome__contains="Joao Pedro")
      

      【讨论】:

      • 很奇怪,它没有给我错误,但它返回“[]”。我认为它会返回此名称的可用信息(“Joao Pedro”)。如果我编辑为: BeneficientePagar.objects.filter(join__nome__contains="Joao Pedro") 它会返回 BeneficientePagar 上的对象。这很奇怪,因为我认为它会返回一个 Join 表的名称。
      • BeneficientePagar.objects.filter() 总是返回 BeneficientePagar 对象。如果查询beneficiente__nome__contains="Joao Pedro" 返回[],则没有BeneficientePagar 对象链接到名称包含“Joao Pedro”的Beneficiente。当您执行过滤器join__nome__contains="Joao Pedro" 时,它会返回链接到JoinBeneficientePagar 对象,名为“Joao Pedro”。
      • 哇,我明白了。我想我正在制造一个很大的困惑。我真正想做的是通过 Foreginkey 访问信息。我认为如果我可以使用“BeneficientePagar”类访问数据,我的意思是,访问 Class Join 和 Beneficiente 中的数据。我在 django 上查找了文档,我认为就是这样。还有其他提示吗?谢谢
      • 我不确定您要做什么。如果您有BeneficientePagar 实例beneficiente_pagar,则可以通过beneficiente_pagar.beneficiente 访问相关的beneficiente
      • 嗯,我想访问 BeneficientePagar 实例并访问我的 Join 类中的名称(我的模型中的“nome”)。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-07-18
      • 2012-01-25
      • 2020-08-13
      • 1970-01-01
      • 2018-06-30
      • 1970-01-01
      • 2023-03-16
      相关资源
      最近更新 更多