有一个简短的问题。试图在一个DetailView中使用关系模型。但是,无论我尝试什么,数据都不会显示。我尝试了几种版本的模板标签,但无济于事。
html
{% for parts in relatedparts %}{{ parts.name }}
</div>{% endfor %}
views.py
class ErrorCodeView(DetailView):
context_object_name = 'error_code_details'
model = models.ErrorCodes
template_name = 'error_code_details.html'
def get_context_data(self, **kwargs):
# xxx will be available in the template as the related objects
context = super(ErrorCodeView, self).get_context_data(**kwargs)
context['relatedparts'] = RelatedParts.objects.filter(name=self.get_object())
return context
models.py
class ErrorCodes(models.Model):
name = models.CharField(max_length=256)
description = models.CharField(max_length=400)
instructions = models.CharField(max_length=256)
PartsNeeded = models.CharField(max_length=120, default='')
usercomments = models.CharField(max_length=400, default='', blank=True)
relpic = models.ImageField(upload_to='media/',blank=True)
relpictwo = models.ImageField(upload_to='media/',blank=True)
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse("errorcodes:errorcodeview",kwargs={'name':self.name})
class RelatedParts(models.Model):
name = models.CharField(max_length=256)
related_error_code = models.ForeignKey(ErrorCodes, on_delete=models.PROTECT)
def __str__(self):
return self.name
答案 0 :(得分:2)
您根本不需要这样做。您可以按照模板中的关系进行操作。
{% for part in object.relatedparts_set.all %}{{ part.name }}{% endfor %}
您在视图中不需要任何代码即可启用此功能。
答案 1 :(得分:0)
是不是“ name = self.get_object()”应该是“ name = self.get_object()。name”?
您当前拥有:
context['relatedparts'] = RelatedParts.objects.filter(name=self.get_object())
但这可能会产生一个空的查询集。