django很多很多管理员显示所有和不相关的项目

时间:2013-05-16 06:15:29

标签: django django-models django-admin

我有一个看起来像这样的对象结构:

客户 - 一对多 - 地点

地点 - 多对多 - 部门

部门 - 一对多 - 对象

这是我的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管理员中的每个部门都下拉。我甚至得到了与不同客户的位置相关联的部门。

此外,当我设置对象的部门时,我会获得所有可用部门的相同列表,甚至是与不同客户相关的部门。

如何将下拉菜单显示给客户支持的部门?

3 个答案:

答案 0 :(得分:1)

快速的一行解决方案,用于过滤多对多关系,将此行放在您的管理对象中:

filter_horizo​​ntal =('departments',)

答案 1 :(得分:0)

您可以使用过滤的查询集

提供自己的表单
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

答案 2 :(得分:0)