2013-05-16 68 views
1

我有一個對象結構,看起來像這樣:Django的多對多管理顯示了所有不相關的項目

客戶 - 一對多 - 位置

地點 - 多對多 - 部門

部門 - 一對多 - 在這裏對象

是我的models.py(我的admin.py爲標準):

class Customer(models.Model): 
    customerName = models.CharField(max_length=64) 


class Department(models.Model): 
    departmentName = models.CharField(max_length=64) 


class Location(models.Model): 
    customer = models.ForeignKey(Customer) 
    departments = models.ManyToManyField(Department) 


class Object(models.Model): 
    location = models.ForeignKey(Location) 
    department = models.ForeignKey(Department) 

問題是,當我想設置對象的部門時,我將django admin中的每個部門都下拉。我甚至會得到與不同客戶位置相關的部門。

此外,當我設置對象的部門時,我會得到所有可用部門的相同列表,即使是與不同客戶關聯的部門也是如此。

如何讓下拉菜單向我顯示客戶支持的部門?

+0

使用您的'models.py'和您的'admin.py'更新涉及的應用程序的問題。 –

回答

1

一個快速在線解決方案來過濾下來多對多關係被放在你的管理對象中:

filter_horizo​​ntal =('departments',)

0

您可以提供自己的形式與過濾的queryset

class DepartmentAdminForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(DepartmentAdminForm, self).__init__(*args, **kwargs) 
     self.fields['customers'].queryset = Customer.objects.filter(...) 

    class Meta: 
     model = Department 


class DepartmentAdmin(admin.ModelAdmin): 
    form = DepartmentAdminForm 
相關問題