我在disciplines
模型中显示了两个多对多的字段(subjects
,Excerpt
),我想在管理页面中仅显示subjects
内disciplines
1}}相应的。
DISCIPLINE | SUBJECT
portugues | article
portugues | verbs
portugues | nons
math | numbers
math | equations
DISCIPLINE = math
DISCIPLINE | SUBJECT
math | numbers
math | equations
为此我在管理员中使用函数formfield_for_manytomany
,它适用于过滤对象,但我无法弄清楚如何根据{{1过滤subject
对象选择,
我尝试使用model.py discipline
中的函数返回相应的id,然后过滤主题,但这种方法在我的管理代理模型中似乎不起作用,因为引发了错误{{ 1}}可能因为我可以在model.py之外访问。我试过在admin代理中声明这个方法,但也不起作用。
get_disciplines
我不是django的专业人士,所以我认为对于有更多经验的人来说可以很简单,我希望你能帮助我
答案 0 :(得分:0)
我找到了一个解决方案,但它不太好,但它的工作
def formfield_for_manytomany(self, db_field, request, **kwargs):
if db_field.name == "subjects":
self_pub_id = request.resolver_match.args[0]
d = Excerpt.objects.get(id=self_pub_id).discipline.first()
kwargs["queryset"] = Subject.objects.filter(disciplines=d)
return super(ExcerptTaggerAdmin, self).formfield_for_manytomany(db_field, request, **kwargs)
如果有人有更好的解决方案,我将不胜感激