Django查询自引用多个关系

2024-06-01 14:40:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着在我的数据库中得到所有手稿的列表,打印出每个手稿的书架,如果它们与其他手稿链接,也打印出这些手稿的书架。在

下面是我的模特们的样子:

class MSS(models.Model):
    shelfmark = models.CharField(max_length=50)
    MSSLink = models.ManyToManyField('self',through='MSSLink',symmetrical=False)
    [...]

class MSSLink(models.Model):
    link1 = models.ForeignKey('MSS', related_name='First_MSS')
    link2 = models.ForeignKey('MSS', related_name='Second_MSS')
    [...]

这是密码视图.py在

^{pr2}$

问题是在我的模板中做什么。我曾考虑过这样做,但我不知道如何测试for循环中的当前MS是否已链接到另一个MS,如果是,如何显示这些shelfmark:

{% if all_MSS %}
    <ul>
    {% for i in all_MSS %}
        <li><a href="/MSS/{{ i.shelfmark}}/">{{ i.shelfmark }}</a></li>
            {% if i.MSSLink %}
            <p>This MS is linked to the following MSS: {{ i.MSSLink.link1 }}</p>
            {% endif %}
    {% endfor %}
    </ul>
{% else %}
    <p>No MSS found</p>
{% endif %}

Tags: nameformodel链接modelsclassmsrelated
1条回答
网友
1楼 · 发布于 2024-06-01 14:40:58

你的模型有点复杂-你可以去掉MSSLink:

class MSS(models.Model):
    shelfmark = models.CharField(max_length=50)
    links = models.ManyToManyField('self', symmetrical=False, blank=True)

    def __unicode__(self):
        return self.shelfmark

并将其添加到模板中:

^{pr2}$

相关问题 更多 >