Хочу создать страницу с добавлением постов вне админки, но реализация не получается. 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'.


Ответы (0 шт):