欢迎,
我在限制与ForeignKey相关的选择时遇到了一些问题。下面我附上我的代码片段( models.py ):
class Car(models.Model):
name = models.CharField(max_length=50)
....
class Driver(models.Model):
name = models.CharField(max_length=50)
car = models.ForeignKey(Car)
....
class CarForm(ModelForm):
class Meta:
model = Car
class DriverForm(ModelForm):
def __init__(self, *args, **kwargs):
super (DriverForm,self).__init__(*args, **kwargs)
self.fileds['car'].queryset = Car.objects.filter(???_1_???)
class Meta:
model = Driver
有人可以给我一些建议应该如何定义??? 1 ???将可用的Car对象仅限于那些未分配给任何Driver的
答案 0 :(得分:1)
首先,如果每个Car
可以,您可以考虑将Driver
和ForeignKey
之间的关系更改为OneToOneField
而不是Car
总是只有一个Driver
。
但是,如果您只想限制表单中的选项,那么您的查询集必须类似于:
from django.db.models import Count
self.fields['car'].queryset = Car.objects.annotate(num_drivers=Count('driver')).filter(num_drivers=0)