我有一个简单的 Django 模型类似于:
class Address(models.Model):
blah
class MemberData(models.Model):
user = models.ForeignKey(User)
addresses = models.ManyToManyField(Address)
我想在管理员中公开地址模型,以允许用户按关联用户过滤地址记录。例如
class AddressAdmin(admin.ModelAdmin):
model = Address
list_filter = [???]
ModelAdmin.list_filter 属性允许这样做,但我不确定要使用什么字段名称来支持我的多对多关系。如果 Address 模型直接引用 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 管理过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5358230/