过滤Django管理页面中的ManyToManyField

2024-09-26 18:08:16 发布

您现在位置:Python中文网/ 问答频道 /正文

问题

我有两个多对多字段(disciplinessubjects)显示在Excerpt模型中,我只想在管理页面中显示subjects中与之对应的subjects。在

示例

DISCIPLINE | SUBJECT
portugues  | article
portugues  | verbs
portugues  | nons
math       | numbers
math       | equations

DISCIPLINE = math

DISCIPLINE | SUBJECT
math       | numbers
math       | equations

我是怎么解决的

为此,我在admin中使用了函数formfield_for_manytomany,它可以很好地过滤对象,但我无法根据选择的discipline来过滤subject对象

我尝试了什么

我尝试在中使用函数模型.pyget_disciplines返回相应的id,然后过滤主题,但是这种方法在我的管理代理模型中似乎不起作用,因为可能会引发一个错误{}因为我可以在外部访问模型.py. 我也尝试在管理代理中声明这个方法,但也不起作用。在

我的代码

^{pr2}$

我不是django的专业人士,所以我想对有经验的人来说可以很简单,希望你能帮助我


Tags: 对象方法函数模型代理math页面subject
1条回答
网友
1楼 · 发布于 2024-09-26 18:08:16

我找到了一个解决办法,但不太好,但很管用

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)

如果有人有更好的解决办法,我会很感激的

相关问题 更多 >

    热门问题