Python django 管理 : How can I show only items belonging to specific model in an admin page?

标签 python django

我正在学习 django 来构建我的网站。 我学会了如何创建模型、 View ,但现在我有一些与管理界面相关的问题。 所以我有代码:

from django.db import models

class AudioBook(models.Model):
    titolo=models.CharField(max_length=250)
    capitoli=models.ManyToManyField('Chapters')

class Chapters(models.Model):
    capitolo=models.CharField(max_length=250)

现在,当我添加新的有声读物时,我可以看到之前添加到其他有声读物中的章节。这不好。我只想要属于这本有声读物的章节,因此,当我添加新章节时,列表必须为空。

我尝试了一些方法:添加 limit_choices_to = models.Q(audiobook__titolo=titolo),但它不起作用。

在命令行中,我可以通过在 Chapters 对象上添加过滤器来检索这些信息,但我可以在管理界面中重现这种情况。 任何想法?我在谷歌上搜索,但没有找到任何对我有帮助的东西。

杰尔马诺

最佳答案

对于多对多关系,Django 管理界面允许您查看您拥有的完整选择列表,然后您可以选择要添加到 AudioBook 对象的任何内容。 这并不意味着所有这些都属于该有声读物。选定的内容(您添加到有声读物中的内容)通常具有灰色背景

here's an example picture

如果该界面让您很烦恼,我建议您在 Chapters 中添加 AudioBook 外键,而不是 MAnyToMany 关系:

class Chapters(models.Model):
    capitolo=models.CharField(max_length=250)
    audio_book = models.ForeignKey(AudioBook,on_delete=models.CASCADE)

这与您的情况更相关。您仍然可以轻松访问有声读物的章节。

关于Python django 管理 : How can I show only items belonging to specific model in an admin page?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51770237/

相关文章:

Python:将正则表达式替换为字符串以用作正则表达式

python - 如何使用 scipy.signal.spectrogram 找到正确的幅度

python pygame鼠标事件不工作并且不引发错误

python - 过滤我的注释

javascript - 循环访问数据表中的嵌套 JSON 对象

Django 1.9 - 更新时出现 IntegrityError

python - Mistune 内联 Lexar 重新编译帮助

python - 如何检查python中是否存在(但不继承)函数?

Django 管理员 : can I define fields order?

python - 在 Django 表单发布请求中访问单选/复选框按钮选择