如何解决django管理员内联字段选项基于主表单字段值进行过滤
我有以下型号:
class Organizations(models.Model):
name = models.CharField(max_length=30,unique=True)
class Postcodes(models.Model):
organization = models.ForeignKey(Organizations,on_delete=models.PROTECT)
postcode = models.PositiveBigIntegerField()
class Agent(models.Model):
organization = models.ForeignKey(Organizations,on_delete=models.PROTECT)
name = models.CharField(max_length=50)
class AgentPostcodes(models.Model):
agent= models.ForeignKey(Agent,on_delete=models.PROTECT)
postcode = models.ForeignKey(Postcodes,on_delete=models.PROTECT)
而admin.py是
class AgentPostcodesInline(admin.TabularInline):
model = AgentPostcodes
class AgentAdmin(admin.ModelAdmin):
list_display = ['organization','name']
inlines = [AgentPostcodesInline]
如何仅根据与该组织相关的邮政编码来根据组织过滤内联表单字段。 目前,它会显示所有与代理无关的组织的邮政编码。
解决方法
覆盖TabularInline
(InlineModelAdmin
)get_queryset
方法,类似于documentation中描述的方法:
ModelAdmin.get_queryset(request)
ModelAdmin的get_queryset方法返回所有的QuerySet 可以由管理站点编辑的模型实例。一个用例 重写此方法是为了显示登录用户拥有的对象:
class MyModelAdmin(admin.ModelAdmin):
def get_queryset(self,request):
qs = super().get_queryset(request)
if request.user.is_superuser:
return qs
return qs.filter(author=request.user)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。