Я пытаюсь получить доступ к ImageField
модели, которая назначена через ForeignKey
другой модели.
У меня есть разные приложения Animal в моих проектах, с почти такой же структурой, как в следующих моделях.py.На целевой странице Моего Проекта я хочу отобразить последние 3 записи каждой (Видовой) Модели с Именем и Картинкой.Если у вида нет изображения, я бы хотел отобразить поле изображения фермы, которое через ForeignKey связано с моими видами.
cows / models.py
class Farm(models.Model):
name = models.CharField(max_length=100)
farm_img = models.ImageField(upload_to='farm_images/',
max_length=255, null=True, blank=True)
class Cows(models.Model):
farm = models.ForeignKey(Farm, on_delete=models.CASCADE, null=True)
name = models.CharField(max_length=100)
entry_date = models.DateField(null=True, blank=True)
cow_img = models.ImageField(upload_to='farm_images/',
max_length=255, null=True, blank=True)
Views.py
class HomeIndex(TemplateView):
template_name = 'home.html'
def get_context_data(self, **kwargs):
context['chickens'] = Chicken.objects.order_by('-entry_date')[:3]
context['cows'] = Cows.objects.order_by('-entry_date')[:3]
context['cats'] = Cats.objects.order_by('-entry_date')[:3]
return context
home.html
<….>
{% for somecow in cows %}
<div class="col-3" id="p1">
<h2>{{ somecow.name }}</h2>
<h2>{{ somecow.entry_date }}</h2>
{% if somecow.cow_img %}
<img src="{{ somecow.cow_img.url }}" alt="Mod" height="100">
{% endif %}
</div>
{% endfor %}
<….>
Пока здесь это не сработало.
Но как я могу получить доступ к FK.Model модели?
Или другими словами, как я могу сказать Джанго:
«Если вы не нашли изображения коровы в Cow.Model, то покажите изображение фермы из назначенной Farm.Model?»
Как я понимаю, я могу получить доступ к назначенным моделям FK через
{% for something in MyModel1.MyModel2_set.all %}
.
мой подход к home.html
<….>
{% for somecow in cows %}
<div class="col-3" id="p1">
<h2>{{ somecow.name }}</h2>
<h2>{{ somecow.entry_date }}</h2>
{% if somecow.cow_img %}
<img src="{{ somecow.cow_img.url }}" alt="Mod" height="100">
{% else %}
{% for farm in somecow.farm_set.all %}
{% if farm.farm_img %}
<img src="{{ farm.farm_img.url }}" alt="Mod" height="100">
{% endif %}
{% endfor %}
{% endif %}
</div>
{% endfor %}
<….>
До сих пор я не получил сообщения об ошибке, но я также не вижу изображения фермы.Я уверен, что я что-то перепутал в home.html.С другой стороны, я думаю, что, может быть, я что-то упустил, на мой взгляд, что-то вроде MyModel.objects.all()
Я благодарен за каждый намек.