Использование слизней в Django (форма + модель)

У меня следующая ошибка:

Ошибка на странице

БД администратора Django

Объект оболочки

Логика, которую я использую в Django, основана на модели и классе ModelForm. Вот модель:

from django.db import models
from django.core.validators import MinValueValidator, MaxValueValidator
from django.urls import reverse


class Ingredient(models.Model):
    name = models.CharField(max_length=100)


    def __str__(self):
        return f'{self.name}'


class Recipe(models.Model):
    slug = models.SlugField(null=True, unique=True, blank=True, editable=False)
    title = models.CharField(null=False, max_length=100)
    description = models.CharField(null=False, max_length=250)
    preparation = models.TextField(null=False)
    score = models.IntegerField(null=True, validators=[MinValueValidator(1), MaxValueValidator(5)])
    last_update = models.DateField(auto_now=True)
    presentation_image = models.ImageField(upload_to='images', null=True, blank=True)
    ingredients = models.ManyToManyField(Ingredient)


    def __str__(self):
        return f'{self.slug}, {self.title}, {self.description}, {self.preparation}, {self.score}, {self.last_update}, {self.presentation_image}, {self.ingredients}'

Вот форма рецепта:

from django import forms
from django.core.validators import MinValueValidator, MaxValueValidator

from .models import Recipe
from .models import Ingredient


class RecipeForm(forms.ModelForm):
    class Meta:
        model = Recipe
        exclude = ['slug', 'last_update']
        widgets = {
            'preparation': forms.Textarea()
        }
        labels = {
            'title': 'Title',
            'description': 'Description',
            'preparation': 'Preparation',
            'score': 'Score',
            'presentation_image': 'Presentation Image',
            'ingredients': 'Ingredients'
        }

Я понимаю, что проблема основана на том, что не генерируется slug (так как он None в оболочке). Поскольку мой путь к одному рецепту основан на slug, то Django просто говорит мне "Эй, чувак, нет slug для работы, извини... Это на твоей совести...".

Эта проблема возникла, когда я попытался добавить новый рецепт из админки Django, а не со своей страницы (Здесь я могу добавить рецепт, но slug будет None. В админке Django я просто получаю ошибку)

Я не могу понять, почему ссылка не генерируется? Пользователь не должен вводить slug сам по себе. Он должен генерироваться на основе заголовка. У пользователя не должно быть высказывания в нем в данный момент.

Не могли бы вы объяснить мне, где моя логика дает сбой и в чем ошибка, чтобы я мог четко понять проблему и избежать этих ошибок новичков в будущем?

Вернуться на верх