我想与这两个表建立多对多关系
1.Qa表
-------------
|ID | QA |
-------------
|1 |qa1 |
|2 |qa2 |
|3 |qa3 |
-------------
2。标记表
-------------
|ID | Tag |
-------------
|1 |tag1 |
|2 |tag2 |
|3 |tag3 |
-------------
为此,我制作了以下3个模型
质量检查模型
class Qa(models.Model):
question_text = models.CharField(max_length=1000, verbose_name='Question')
tags = select2.fields.ManyToManyField(Tag, blank=True, through = 'Qa_Tag', verbose_name='Tag')
"""
And some more fields.
"""
def __str__(self):
return self.question_text
class Meta:
ordering = ("id",)
verbose_name = 'QA data'
标记模型
class Tag(models.Model):
tag_text = models.CharField(max_length=30, unique=True, verbose_name='Tag')
def __str__(self):
return self.tag_text
class Meta:
verbose_name = 'Tag'
和保持关系的模型
Qa_Tag模型
class Qa_Tag(models.Model):
tag = models.ForeignKey(Tag, verbose_name='tag')
qa = models.ForeignKey(Qa, verbose_name='qa')
def __str__(self):
return self.tag.tag_text
,然后在我的forms.py中添加这些字段。
class QaAdminForm(ModelForm):
class Meta:
model = Qa
fields = ('question_text', 'tags', 'some_more-fields')
当我尝试添加质量检查记录表格时,显示除标签外的所有字段。 如果我在admin.py中注册此模型,则可以将数据添加到标签和质量检查中,然后可以通过Qa_tag建立关系。 但是实际上我不想要那个Qa_tag。
在没有through = 'Qa_Tag'
和Qa_Tag
模型的情况下,ManyToManyField可以按照我的上述代码工作。但是我需要__str__
模型的Qa_Tag
函数来显示可理解的文本。
我该如何纠正。