можно ли применять на один шаблон 2 или более моделей в Джанго
Можно ли применять на один шаблон 2 или более моделей. вот код моделей
class Goods(models.Model):
description_text = models.CharField(max_length=200)
price_text = models.CharField(max_length=200)
def __str__(self):
return self.description_text
def __str__(self):
return self.price_text
class Number(models.Model):
number1_text = models.CharField(max_length=200)
number2_text = models.CharField(max_length=200)
def __str__(self):
return self.number1_text
def __str__(self):
return self.number2_text
они должны применятся на шаблон index.html
для этого я добавил ещё один класс к views.py с одним и тём же шаблоном как у IndexView, я подумал что эти классы по дельности будут отображать свою модель но при этом на один шаблон index.html, однако не удивительно что ничего не работает). Прошу помочь, и не судить строго так как я новичок в Джанго и ещё не особо понимаю как работает этот фреймворк, если какие-то неувязочки в формулировании вопроса так же извиняюсь.
class IndexView(generic.ListView):
template_name = 'Homepage/index.html'
model = Goods
context_object_name = 'goods'
def description(self):
return self.description_text
def price(self):
return self.price_text
class NumbersView(generic.ListView):
template_name = 'Homepage/index.html'
model = Number
context_object_name = 'numbers'
def number1(self):
return self.number1_text
def number2(self):
return self.number2_text
Ответы (1 шт):
Автор решения: Uncle_Ragnar
→ Ссылка
URLS.PY
path('index_page', IndexView.as_view(), name='index'),
VIEWS.PY
class IndexView(View):
model1 = Goods
model2 = Number
template = 'Homepage/index.html'
context = {}
def get(self, *args, **kwargs):
self.context = {
'goods': self.model1.objects.all()
'numbers': self.model2.objects.all()
}
return(render(request, self.template, self.context))
INDEX.HTML
{% for good in goods %}
<p>{{ good.нужное поле или метод }}</p>
{% endfor %}
{% for number in numbers %}
<p>{{ number.нужное поле или метод }}</p>
{% endfor %}
Могут быть грамматические ошибки, так что лучше не копипастить.