我有一个简单的Django模型,类似于:
class Address(models.Model):
blah
class MemberData(models.Model):
user = models.ForeignKey(User)
addresses = models.ManyToManyField(Address)
我想在admin中公开地址模型,以允许用户按关联用户筛选地址记录。例如
class AddressAdmin(admin.ModelAdmin):
model = Address
list_filter = [???]
modeladmin.list_filter属性允许这样做,但我不确定使用哪个字段名来支持我的多对多关系。如果地址模型直接引用了memberdata模型,我可以这样做:
class AddressAdmin(admin.ModelAdmin):
model = Address
list_filter = ['memberdata__user']
对于间接的多对多关系有什么等价的语法吗?如果没有,是否有解决方法来实现相同的目标?
最佳答案
我相信在这样的情况下,您可以为您的M2M关系建立一个简单的through
模型,然后使用普通语法来遵循(现在显式的)ForeignKey
s。
class Address(models.Model):
blah
class MemberData(models.Model):
user = models.ForeignKey(User)
addresses = models.ManyToManyField(Address,through='MemberAddress')
class MemberAddress(models.Model):
member = models.ForeignKey(MemberData)
address = models.ForeignKey(Address)
在行政部门:
class AddressAdmin(admin.ModelAdmin):
model = Address
list_filter = ['memberaddress_set__member__user']
关于python - 在多对多字段上启用Django Admin过滤器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5358230/