Хочу создать страницу с добавлением постов вне админки, но реализация не получается. Field 'id' expected a number but got 'Magazine'
views.py
class PostCreateView(LoginRequiredMixin, CreateView):
model = Post
fields = ['title', 'description', 'poster']
def form_valid(self, form):
form.instance.magazine.market = self.request.user
return super().form_valid(form)
models.py
class Magazine(models.Model):
"""Магазин"""
market = models.OneToOneField(User, on_delete=models.CASCADE, verbose_name="название")
telelink = models.CharField("Ссылка на телеграм", max_length=100)
delivery = models.BooleanField(default=False, verbose_name="Доставка")
click_uz = models.BooleanField(default=False, verbose_name="Онлайн платёж")
poster = models.ImageField("Главное фото", upload_to="product_images/", default="default.jpeg", blank=True,
null=True)
def __str__(self):
return self.market.username
class Meta:
verbose_name = "Магазин"
verbose_name_plural = "Магазины"
def get_absolute_url(self):
return reverse('magazine_detail', kwargs={"slug": self.market})
def get_magazine_posts(self):
return reverse("magazine_posts", kwargs={"username": self.market })
class Post(models.Model):
"""Пост"""
title = models.CharField("Название", max_length=64)
poster = models.ImageField("Главное фото", upload_to="product_images/", default="default.jpeg", blank=True,
null=True)
description = models.TextField("Описание")
price = models.PositiveIntegerField("Стоимость", default=0, help_text="Указывать в сумах")
magazine = models.ForeignKey(Magazine, verbose_name="Поставщик",
on_delete=models.SET_DEFAULT, default='Magazine')
category = models.ForeignKey(Category, verbose_name="Категория", on_delete=models.SET_NULL, null=True)
url = models.SlugField(max_length=70, unique=True)
draft = models.BooleanField("Черновик", default=False)
created = models.DateTimeField(auto_now_add=True, auto_now=False)
updated = models.DateTimeField(auto_now_add=False, auto_now=True)
def __str__(self):
return self.title
class Meta:
verbose_name = "Пост"
verbose_name_plural = "Посты"
def get_absolute_url(self):
return reverse("post_detail", kwargs={"slug": self.url})
def get_magazine_posts(self):
return reverse("magazine_posts", kwargs={"slug": self.magazine.market.username })
def get_review(self):
return self.reviews_set.filter(parent__isnull=True)
def save(self):
super(Post, self).save()
if not self.url:
self.url = slugify(self.title) + '-' + str(self.id)
super(Post, self).save()
Ошибка:
ValueError at /post/new/
Field 'id' expected a number but got 'Magazine'.