代码之家  ›  专栏  ›  技术社区  ›  mhs

Django删除确认视图,显示变量名而不是信息

  •  2
  • mhs  · 技术社区  · 6 年前

    有人能帮我处理以下情况吗? 我有三张像下面这样的桌子。1&2是我的数据表。 3与1&2保持关系。

    1.Qa table
    -------------
    |ID |   QA  |
    -------------
    |1  |qa1    |
    |2  |qa2    |
    |3  |qa3    |
    -------------
    a field of my Qa model
    tags = select2.fields.ManyToManyField(Tag, blank=True, verbose_name='Tag')
    
    2.Tag table
    -------------
    |ID |   Tag |
    -------------
    |1  |tag1   |
    |2  |tag2   |
    |3  |tag3   |
    -------------
    
    3.qa tag relation
    ---------------------
    |ID |QA_ID  |Tag_ID |
    ---------------------
    |1  |1      |2      |
    |2  |1      |3      |
    |3  |2      |1      |
    |4  |3      |1      |
    |5  |3      |2      |
    |6  |3      |3      |
    ---------------------
    

    编辑

    质量保证模型

    class Qa(models.Model):
    
        question_text = models.CharField(max_length=1000, verbose_name='Question')
        tags = select2.fields.ManyToManyField(Tag, blank=True, 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 = 'QA Tag'
    

    _»我没有质量保证标签模型

    如果我删除标签列表(从上面的2.tag表中),它会重定向到确认表。它用一些变量名显示列表,比如下面

    • 标签:TAG1
      • 质量保证标签关系:质量保证标签对象
      • 质量保证标签关系:质量保证标签对象
    • 标签:TAG2
      • 质量保证标签关系:质量保证标签对象
    • 标签:TAG3
      • 质量保证标签关系:质量保证标签对象
      • 质量保证标签关系:质量保证标签对象
      • 质量保证标签关系:质量保证标签对象

    我真正期望的是(用户可读的信息)

    • 标签:TAG1
      • 质量保证标签关系:QA2
      • 质量保证标签关系:QA3
    • 标签:TAG2
      • 质量保证标签关系:QA1
    • 标签:TAG3
      • 质量保证标签关系:QA1
      • 质量保证标签关系:QA2
      • 质量保证标签关系:QA3

    我不知道为什么会发生这种情况,也不知道如何解决它。任何帮助都将不胜感激。

    编辑2:

    在DanielRoseman的回答之后,我试图创建一个自己的模型来处理多对多的关系。

    class Qa_Tag(models.Model):
    
        def __str__(self):
            return  self.tag.tag_text 
    

    质量保证模型改变如下

    class Qa(models.Model):
        ....
    
        tags = select2.fields.ManyToManyField(Tag, blank=True, through = 'Qa_Tag', verbose_name='Tag')
    
        ....
    

    删除时显示值。但是我必须在admin.py中注册qa_标签,并且唯一可以分配关系的方法是通过qa_标签视图。

    现在我知道原因是没有 __str__() 我的qa_标记表的方法,但仍然无法找到如何为生成的qa_标记表编写模型类,而不需要任何制动。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Daniel Roseman    6 年前

    您没有展示您的模型,但几乎可以肯定的是,您没有定义 __str__ 方法。