我有 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/