Bread09
@Bread09
Newonkiy

Миксин в Django?

При написани

from django.shortcuts import render
from django.shortcuts import get_object_or_404

from . models import *

class ObjectDetailMixin:
  model = None
  template = None

  def get(self, request, slug):
    obj = Tag.objects.get(slug__iexact=slug)
    return render(request, self.template, context={self.model.__name__.lower(): obj})


отображается страница только с тегами (obj = Tag.objects.get(slug__iexact=slug))
но не работает страница с постами

Как сделать так что бы показывали и модель Tag и модель Post
ну типа obj = Tag&&Post.objects.get(slug__iexact=slug)
  • Вопрос задан
  • 1214 просмотров
Решения вопроса 3
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
За три дня так и не разобрались? У вас два разных представления, которым приходит два разных slug, и которые работают с разными моделями, но из-за миксина метод get у них один. Либо вообще не используйте миксин, так как в вашем случае от него нет никакого толку, либо сделайте его обобщённым, чтобы он использовал модель того CBV, в который подмешан.
Ответ написан
devrais
@devrais
В html циклами.
{% for post in MODEL %}
<div class="card mb-2">
  <div class="card-header">
  {{ post.date_pub }}
  </div>
  <div class="card-body">
    <h5 class="card-title">{{ post.title }}</h5>
    <p class="card-text">{{ post.bodu|truncatewords:20 }}</p>
    <a href="{{ post.get_absolute_url }}" class="btn btn-light">Read</a>
  </div>
  <div class="card-header">
    Tags:
    {% for tag in post.tags.all %}
      <a href="{{ tag.get_absolute_url }}" class="badge badge-secondary">{{ tag.title|title }}</a>
    {% endfor %}
  </div>
</div>
  {% endfor %}
Ответ написан
alternativshik
@alternativshik
добавить модель Post. Непонятно вообще почему это должно работать не так, как написано в коде, и почему вы это назвали Mixin, когда там какая-то полноценная вьюха, которая отвечает на гет-запрос, при этом очень странно выглядит.
Подозреваю, что надо было не гет переопеределять, а get_context_data()
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы