python - 无法正确绑定(bind)多对多字段

标签 python django django-models django-admin

我有 2 个模型:

class Tag(models.Model):
    """
    model for tag
    """
    # name of tag
    name = models.CharField(max_length=30, verbose_name="tag name", unique=True)
    def __str__(self):
        return self.name


class Note(models.Model):
    """
    model for note
    """
    # date of publication note
    publication_date = models.DateField("Publication date", auto_now_add=True)
    # date of last change
    date_last_change = models.DateField("Last changed", auto_now=True)
    # note title
    title = models.CharField(max_length=200, verbose_name="Note title")
    # main text of note
    main_text = models.TextField("Note text")
    # tags
    tags = models.ManyToManyField(Tag, related_name='Tags')
    def __str__(self):
        return self.title

如您所见,一个笔记有多个标签,一个标签与多个笔记相关。但是当我开始在管理面板中填充数据时,我注意到当我在注释中添加标签时,它会自动绑定(bind)到所有注释。即使我在管理面板中使用标签菜单添加标签,它也会绑定(bind)到所有笔记。 我已经尝试手动添加像 NoteTag 这样带有外键的模型到 Note 和 Tag,但遇到了同样的问题。我对 django 还是个新手,对这种情况有点困惑。

最佳答案

你确定吗?您是否可能对默认显示所有相关记录的 django ManyToManyField 小部件感到困惑?

尝试用 shell 来检查它:

note = Note.objects.get(id=1)
note.tags.all()

将打印所有注释标签。

您可以使用第三方应用程序调整小部件(https://pypi.python.org/pypi/django-widget-tweaks/1.3)但我想这并不那么简单:)

关于python - 无法正确绑定(bind)多对多字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23774585/

相关文章:

Django 选择不同的

python - Django 通过外键分面子类别

python - 语音SDK拖拽错误: Exception with an error code: 0xe (SPXERR_MIC_NOT_AVAILABLE)

python - 根据给定的日期范围获取星期一和星期日

Django API 框架 - 嵌套模型 View

python - 相同模型出现在冲突模型错误中

django - 如何使Django应用程序可插入?

python - 当编写/阅读 python 代码时,人们如何判断变量是否是对象?

python - 在 matplotlib 中仅连接一段数字数组

python - 在 Django 中添加静态 html 页面