У меня есть две модели Фермер и Животные. Животные связаны с Фермером через ForeignKey.
Как вы видите ниже в шаблоне, я хочу показать фермера и его родственных животных. Мой шаблон отображает имя, фамилию и город, правильно не хватает только связанных животных из дочерней модели.
В других проектах я использовал "{% для элемента в 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>
<...>