Cer*_*rin 14 python django django-admin
我有一个简单的Django模型,类似于:
class Address(models.Model):
blah
class MemberData(models.Model):
user = models.ForeignKey(User)
addresses = models.ManyToManyField(Address)
Run Code Online (Sandbox Code Playgroud)
我想在admin中公开Address模型,以允许用户通过其关联用户过滤地址记录.例如
class AddressAdmin(admin.ModelAdmin):
model = Address
list_filter = [???]
Run Code Online (Sandbox Code Playgroud)
ModelAdmin.list_filter属性允许这样做,但我不确定使用哪个字段名来支持我的多对多关系.如果Address模型直接引用MemberData模型,我可以执行以下操作:
class AddressAdmin(admin.ModelAdmin):
model = Address
list_filter = ['memberdata__user']
Run Code Online (Sandbox Code Playgroud)
是否存在间接多对多关系的等效语法?如果没有,是否有任何解决方法来完成同样的目的?
我相信这样的情况,你可以through
为你的M2M关系制作一个简单的模型,然后使用正常的语法来遵循(现在显式的)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)
Run Code Online (Sandbox Code Playgroud)
并在管理员:
class AddressAdmin(admin.ModelAdmin):
model = Address
list_filter = ['memberaddress_set__member__user']
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6052 次 |
最近记录: |