我有以下表格模型。
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)
所以我无法访问我想要的修饰符。
谢谢您的帮助
我认为您想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.all不level.exp.all。