Я хочу сменить модель поста.Раньше у меня было очень простое отношение.Есть 3 модели User
, Post
и Group
.Пользователь может создавать сообщения, и сообщение должно принадлежать 1 группе. пример: Пользователь Samir написал сообщение о Футбол.Этот пост принадлежит группе Спорт.Ниже показано, как выглядят модели
Более ранняя модель:
class Post(models.Model):
user = models.ForeignKey(User, related_name='posts')
group = models.ForeignKey(Group, related_name='posts')
title = models.CharField(max_length=250, unique=True)
slug = models.SlugField(allow_unicode=True, unique=True, max_length=500)
message = models.TextField()
Я хочу изменить это так, чтобы каждое сообщение могло принадлежать максимум 3 и минимум 1группа.
Ниже представлена моя модель
class Post(models.Model):
user = models.ForeignKey(User, related_name='posts')
group = models.ManyToManyField(Group, related_name='posts', max_length=3)
title = models.CharField(max_length=250, unique=True)
slug = models.SlugField(allow_unicode=True, unique=True, max_length=500)
message = models.TextField()
Пост успешно создан, но не перенаправляет на страницу с подробностями поста и выдает ошибку ниже.Также в админке django группа в постах пуста.Ниже мой DetailView
Мои просмотры:
from braces.views import SelectRelatedMixin
class PostDetail(SelectRelatedMixin, DetailView):
model = Post
select_related = ('user', 'group')
def get_queryset(self):
queryset = super().get_queryset()
return queryset.filter(user__username__iexact=self.kwargs.get('username'))
def get_context_data(self, **kwargs):
context = super(PostDetail, self).get_context_data()
return context
Мой URL для DetailView:
url(r'^(?P<username>[-\w]+)/(?P<slug>[-\w]+)/$', views.PostDetail.as_view(), name='single'),
Ниже ошибка
Я попытался изменить select_related
на prefetch_related
, но проблема все еще сохраняется.Как мне это исправить
******* Ниже на основе решения @ Ruddra *****
Извините, я считаю, что это почти решено.После того, как я изменил связанное с выбором, я получил следующую ошибку
Я полагаю, что это может иметь какое-то отношение к URL моей группы, Ниже приведены мои группы model
, view
и url
, которые очень просты
Модель
class Group(models.Model):
name = models.CharField(max_length=250, unique=True)
description = models.TextField(default='', blank=True)
members = models.ManyToManyField(User, through='GroupMember')
Вид представляет собой 1 вкладыш
class GroupCreate(LoginRequiredMixin, CreateView):
model = Group
fields = ('name', 'description')
class GroupList(ListView):
model = Group
class GroupDetail(DetailView):
model = Group
И, наконец, Url - это
url(r'^posts/in/(?P<slug>[-\w]+)/$', views.GroupDetail.as_view(), name='single'),
Как вы думаете, что я делаю неправильно