2012-08-14 67 views
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

首先,你可能要考慮改變CarDriver之間的關係,一個OneToOneField而非ForeignKey如果每個Car總是可以只有一個Driver

但是,如果你只是想限制形式的選擇,你的查詢集必須是這樣的:

from django.db.models import Count 
self.fields['car'].queryset = Car.objects.annotate(num_drivers=Count('driver')).filter(num_drivers=0) 
+0

感謝邁克爾。現在它可以工作。 – Grzegorz 2012-08-15 16:02:14