0

欢迎,

我在限制与 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 的对象?

4

1 回答 1

1

首先,您可能需要考虑将Carand之间的关系更改Driver为 aOneToOneField而不是 aForeignKey如果每个Car总是只能有一个Driver.

但是,如果您只想限制表单中的选择,您的查询集需要类似于:

from django.db.models import Count
self.fields['car'].queryset = Car.objects.annotate(num_drivers=Count('driver')).filter(num_drivers=0)
于 2012-08-14T17:51:27.533 回答