Я не могу получить объекты в шаблоне, которые связаны с моделью mptt django. Не удалось найти ключевые [жанры]. У меня есть модель, которая связана с другой моделью. Я использую mptt django, чтобы объект был связан через отношения многих ко многим. На административной панели все нормально, но эта проблема возникает при отображении объекта в шаблоне. Что я должен сделать лучше всего? Может быть, я неправильно устанавливаю цикл для объекта?
models.py:
from django.db import models
from django.urls import reverse
from django.utils import timezone
from mptt.models import MPTTModel, TreeForeignKey, TreeManyToManyField
class Genre(MPTTModel):
name = models.CharField(max_length=50, unique=True, verbose_name='Подкатегория')
slug = models.SlugField(max_length=200, null=True, blank=True, unique=True, verbose_name='Nazvanie_kategorii')
parent = TreeForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name='children',
verbose_name='Категория')
is_active = models.BooleanField(default=False, verbose_name='Активность категории')
created = models.DateField(blank=True, null=True, default=timezone.now, verbose_name='Дата создания записи')
updated = models.DateField(blank=True, null=True, default=timezone.now, verbose_name='Дата ред-ия записи')
class MPTTMeta:
order_insertion_by = ['name']
verbose_name = 'Тест мптт'
verbose_name_plural = 'Тест мптт'
class Meta:
verbose_name = 'Дерево категорий'
verbose_name_plural = 'Дерево категорий'
def __str__(self):
return '%s' % self.name
def get_absolute_url(self):
return reverse('test_mptt:promotion_list_by_category', args=[self.slug])
views.py:
from django.shortcuts import render, get_object_or_404
from .models import Genre, Promotion, PromotionDetails
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
def show_genres(request, category_slug=None):
category = None
categories = Genre.objects.all()
promotions = Promotion.objects.filter(is_active=True)
if category_slug:
category = get_object_or_404(Genre, slug=category_slug)
promotions = promotions.filter(category=category)
return render(request, "genre/list.html", {'category': category,
'categories': categories,
'promotions': promotions})
html список шаблонов. html :( Я импортировал {% load mptt_tags%})
<div class="latest_product_inner row">
{% for promotion in promotions %}
<div class="col-md-12">
<div class="offer_post">
<div class="offer_details">
{% if promotion.site %}
<a href="{{ promotion.site }}" target="_blank"><h2>{{ promotion.name }}</h2></a>
{% else %}
<a><h2>{{ promotion.name }}</h2></a>
{% endif %}
<p>{{promotion.description|truncatechars:220}}</p>
<div class="offer_info text-left">
<div class="offer_tag">
<a class="active" href="#">{{ promotion.category }}</a>
</div>
<ul class="offer_meta list">
<li><a href="/"><i class="lnr lnr-home"></i> Адрес: {{ promotion.country }}, {{ promotion.region }}, {{ promotion.town }}, {{ promotion.address }}</a></li>
{% if promotion.schedule_start and promotion.schedule_end %}
<li><a><i class="lnr lnr-clock"></i> Часы работы: {{ promotion.schedule_start|time:'H:i' }} - {{ promotion.schedule_end|time:'H:i' }}</a></li>
{% else %}
<li><a><i class="lnr lnr-calendar-full"></i> Часы работы: круглосуточно </a></li>
{% endif %}
{% if promotion.phone %}
<li><a><i class="lnr lnr-phone"></i> Телеофон: {{ promotion.phone }} </a></li>
{% endif %}
</ul>
</div>
<a href="{{ promotion.get_absolute_url }}" class="white_bg_btn">Подробнее</a>
</div>
</div>
</div>
{% endfor %}
</div>
<aside class="left_widgets cat_widgets">
<div class="widgets_inner">
<ul class="list">
{% recursetree genres %}
<li>
<a href="{{ node.get_absolute_url }}">{{ node.name }}</a>
{% if not node.is_leaf_node %}
<ul class="list">
<li><a href="#">{{ children }}</a></li>
</ul>
{% endif %}
</li>
{% endrecursetree %}
</ul>
</div>
</aside>
Журнал ошибок: