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 ??? 利用可能な車のオブジェクトを、どのドライバーにも割り当てられていないものだけに制限するには?

4

1 に答える 1

1

まず、それぞれが常に1つしか持てない場合は、Carとの間の関係DriverをaOneToOneFieldではなくに変更することを検討することをお勧めします。ForeignKeyCarDriver

ただし、フォームの選択肢を制限するだけの場合は、クエリセットを次のようにする必要があります。

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 に答える