我想获得一个QuerySet(提供一个ModelChoiceField),列出相关集合上有一个空的ForeignKey的所有对象。
我模型的示例摘录:
class Bankcard(models.Model):
name = models.CharField(max_length=128)
number = models.IntegerField()
...
class Person(models.Model):
bankcard = models.ForeignKey(Bankcard, blank=True, null=True)
first_name = models.CharField(max_length=64)
last_name = models.CharField(max_length=64)
...
在表格中,我想列出尚未与某人挂钩的所有银行卡。
我尝试的是将自己的过滤作为列表的一部分:
bankcards = Bankcard.objects.all()
unbound_cards = []
for card in bankcards:
if len(card.person_set.all()) == 0:
unbound_cards.append(card)
...但是这不起作用,因为我需要向ModelChoiceField提供QuerySet而不是列表,我得到'list' object has no attribute 'all'
。
所以我尝试直接在相关集上过滤:
unbound_cards = Bankcard.objects.filter(person_set__isnull = True)
这也不起作用:django.core.exceptions.FieldError: Cannot resolve keyword 'person_set' into field. Choices are: ...
有什么想法吗?
答案 0 :(得分:7)
尝试:
Bankcard.objects.filter(person__isnull=True)