我正在尝试显示子模型“ usertraining ”条目中通过外键链接到“ training ”条目的字段。但是第二个查询集usertraining_set
似乎不包含任何内容。我想念什么?
我有以下 template 循环:
{% for training in training_list %}
{% for elem in training.usertraining_set.all %}
<div class="training">
<div class="training-info">
<div class="training-main-title">
<div class="training-state">{{ elem.state }}</div>
<a href="{% url 'my_app:training_detail' pk=training.pk %}">{{ training.title }}</a>
</div>
<div class="training-date">
<p>Last trained: {{ elem.last_training_date|date:"D, d M Y, H:i:s" }}</p>
</div>
<div class="training-score">
Score: <span class="badge btn-circle">{{elem.score}}</span>
</div>
</div>
<img src="{{ training.title_pic.url }}">
</div>
{% endfor %}
{% endfor %}
模型
class Training(models.Model):
title = models.CharField(max_length = 2000, blank = False)
title_pic = models.ImageField(upload_to = 'training/title_pics', blank = False)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse("training_detail",kwargs={'pk':self.pk})
@property
def title_pic_url(self):
if self.title_pic and hasattr(self.title_pic, 'url'):
return self.title_pic.url
class UserTraining(models.Model):
user = models.ForeignKey(User,related_name='usertraining',on_delete=models.CASCADE)
training = models.ForeignKey(Training,related_name='usedtraining',on_delete=models.CASCADE)
state = (
('train', 'train'),
('training', 'training...'),
('retrain', 'retrain'),
('trained','trained')
)
state = models.CharField(max_length = 200, choices = state, default = 'train')
last_training_date = models.DateTimeField(auto_now=True)
score = models.CharField(max_length = 4, default = '0%')
def __str__(self):
""" String representation of Training entry """
return "{}_{}".format(self.user,self.training)
答案 0 :(得分:1)
您正在UserTraining模型字段中使用“ related_name”:
user = models.ForeignKey(User,related_name='usertraining',on_delete=models.CASCADE)
training = models.ForeignKey(Training,related_name='usedtraining',on_delete=models.CASCADE)
_set后缀仅在字段没有相关名称时使用,因此在模板中为:
{% for elem in training.usertraining.all %}