我有一个看起来像这样的对象结构:
客户 - 一对多 - 地点
地点 - 多对多 - 部门
部门 - 一对多 - 对象
这是我的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管理员中的每个部门都下拉。我甚至得到了与不同客户的位置相关联的部门。
此外,当我设置对象的部门时,我会获得所有可用部门的相同列表,甚至是与不同客户相关的部门。
如何将下拉菜单显示给客户支持的部门?
答案 0 :(得分:1)
快速的一行解决方案,用于过滤多对多关系,将此行放在您的管理对象中:
filter_horizontal =('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)
我相信答案是使用formfield_for_manytomany