1

我有两个模型:

class Income(models.Model):
    id = models.AutoField('ID', primary_key=True)
    date = models.DateField('Date', blank=True, null=True)
    user = models.ForeignKey(User, null=True, help_text="User Income")

class Invoice(models.Model):
    id = models.AutoField('ID', primary_key=True)
    income = models.ForeignKey(Income, null=True, blank=True, related_name='Income')
    user = models.ForeignKey(User, null=True, blank=True, related_name='User_Invoice')

我需要获取与任何“发票”无关的“收入”。我没有办法看到这个问题。非常感谢 :)

4

1 回答 1

1

过滤使用__isnull

通常,Django 使用相关模型的小写名称自动遵循关系字段:

Income.objects.filter(invoice__isnull=True)

在这里,您已经指定了related_name属性,因此您需要使用它:

Income.objects.filter(Income__isnull=True)

请注意,这表明您在incomeFK 上的相关名称属性Invoice是向后的。我认为您根本没有理由设置 a related_name,但如果您确实需要一个,它应该描述发票与收入的关系,反之亦然。

于 2013-08-23T18:30:42.953 回答