【发布时间】:2019-10-29 09:37:55
【问题描述】:
我有两个模型 Farmer 和 Animals。 Animal(s) 通过 ForeignKey 与 Farmer(s) 相关联。
正如您在模板中看到的,我想展示一个农民和他的相关动物。我的模板显示 first_name、last_name 和 city,正确地唯一缺少的是子模型中的相关动物。
在其他项目中,我使用“{% for item in ParentModel.ChildModel_set.all %}”来访问子模型,不幸的是这次它不起作用。
那是因为我使用了 DetailView 吗?
models.py
class Farmer(models.Model):
first_name = models.CharField(max_length=40)
last_name = models.CharField(max_length=40)
city = models.CharField(max_length=40)
objects = FarmerManager() # --- link to Manager
def __str__(self):
return self.last_name
def get_absolute_url(self):
return reverse("datainput:farmer_detail", kwargs={"id": self.id})
class Animal(models.Model):
name = models.CharField(max_length=40)
weight = models.DecimalField(max_digits=5, decimal_places=2)
species = models.ForeignKey('Species', on_delete=models.CASCADE)
farmer = models.ForeignKey('Farmer', related_name='farmername', on_delete=models.CASCADE)
objects = AnimalManager() # --- link to Manager
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse("datainput:animal_detail", kwargs={"id": self.id})
views.py
class FarmerDetailView(DetailView):
template_name ="datainput/farmer_detail.html"
queryset = Farmer.objects.all()
def get_object(self):
some_id = self.kwargs.get("id")
return get_object_or_404(Farmer, id=some_id)
urls.py
<...>
path('farmer/<int:id>/', FarmerDetailView.as_view(), name='farmer_detail'),
<...>
farmer_detail.html
<...>
<div class="row" id="p1">
<div class="col-6 offset-md-3">
<p> Bauer {{ farmer.first_name }} {{ farmer.last_name }}</p> in {{ farmer.city }}
{% for animals in farmer.animal_set.all %}
<p> {{ animals }} </p>
{% endfor %}
</div>
</div>
<...>
【问题讨论】:
标签: django django-models django-templates django-views