Как лучше решить проблему с urls django
У меня есть раздел жилые интерьеры на сайте, соответственно типичный url выглядит, так https://caparolcenterspb.ru/decision/livingrooms/kitc.. (комната и стиль)
Однако у разных комнат могут совпадать стили и при поиске стили во views.py может выдать несколько стилей и ошибку
views.py
selected_room = Room.objects.get(slug=rmslg)
style = Style.objects.get(slug=stslg)
При попытке замены slug на разный у стилей в зависимости от комнаты(пример provans_kitchen), возникает ошибка в template(просто 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):
1.либо изменить stslg в template по умолчанию на 'provans_' + str(room.slug), но эта строчка не работает(тем более не факт что везде будет provans)
2.либо искать style в views.py не только по stslg, но и по rmslg, однако для этого в модели style необходимо создать поле room наследующееся от модели room, что тоже у меня не выходит, так как Room объявлен дальше чем Style
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 = 'Комнаты'