У меня есть раздел жилых интерьеров на сайте, поэтому типичный URL выглядит следующим образом https://caparolcenterspb.ru/decision/livingrooms/kitchen/provans/ (номер и стиль)
Однако разные комнаты могут иметь одинаковые стили и когда поиск стилей в views.py может привести к выводу нескольких стилей и появлению ошибки
views.py
selected_room = Room.objects.get(slug=rmslg)
style = Style.objects.get(slug=stslg)
При попытке заменить слаг на разные стили в зависимости от комнаты (например, provans_kitchen), в шаблоне возникает ошибка (просто ставить provans по умолчанию не будет работать)
residentialInteriors. html
{% for room in all_rooms %}
<li class="menu__item menu__item_interiors"><a href="{% url 'decision:style' rmslg=room.slug stslg='provans' %}">{{ room.name }}</a></li>
{% endfor %}
У меня есть 2 решения (желательно 2):
либо измените stslg в шаблоне по умолчанию на 'provans_' + str (room. Slug), но эта строка не работает (особенно если учесть, что прованы будут везде)
либо ищите стиль в views.py не только для stslg, но и для rmslg, но для этого в модели стиля необходимо создать поле комнаты, унаследованное от модели комнаты, которая также не работает для r, так как номер объявлен дальше, чем стиль
models.py
class Style(models.Model):
name = models.CharField(max_length=30)
full_name = models.CharField(max_length=50)
slug = models.SlugField()
img = models.ImageField(upload_to='img/')
walls = models.TextField()
floor = models.TextField()
roof = models.TextField()
def __str__(self):
return self.full_name
class Meta:
verbose_name = 'Стили'
verbose_name_plural = 'Стили'
class Room(models.Model):
name = models.CharField(max_length=30)
slug = models.SlugField()
styles = models.ManyToManyField(Style)
def __str__(self):
return self.name
class Meta:
verbose_name = 'Комнаты'
verbose_name_plural = 'Комнаты'