Django:通过表从多到多的模板访问值

Mik*_*ike 4 django

我有以下表格模型。

class Experience(models.Model):
    name = models.CharField(max_length=50)

    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)

    about = models.TextField()

    def __unicode__(self):
        return self.name

class Level(models.Model):
    level = models.IntegerField()
    details = models.TextField()

    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)

    started = models.IntegerField(default=0)
    completed = models.IntegerField(default=0)

    exp = models.ManyToManyField(Experience, through='ExperienceLinks')

    def __unicode__(self):
        return "Level %i" % self.level



class ExperienceLinks(models.Model):
    experience = models.ForeignKey(Experience, on_delete=models.CASCADE)
    level = models.ForeignKey(Level, on_delete=models.CASCADE)

    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)

    modifier = models.IntegerField(default=1)
Run Code Online (Sandbox Code Playgroud)

将关卡对象传递给模板,我正在尝试获取关卡体验的修饰符。我想

  {% for exp in level.exp.all %}

      <p><span class="label label-secondary ">{{ exp }} (+{{ exp.modifier }})</span></p>

  {% endfor %}
Run Code Online (Sandbox Code Playgroud)

我只得到以下输出

exp1 (+)
exp2 (+)
Run Code Online (Sandbox Code Playgroud)

所以我无法访问我想要的修饰符。

谢谢您的帮助

mar*_*hep 9

我认为您想through object在模板中调用而不是传递到 M2M 字段中的对象。

  {% for exp in level.experiencelinks_set.all %}

  <p><span class="label label-secondary ">{{ exp }} (+{{ exp.modifier }})</span></p>

  {% endfor %}
Run Code Online (Sandbox Code Playgroud)

使用level.experiencelinks_set.alllevel.exp.all