Использование слизней в 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 сам по себе. Он должен генерироваться на основе заголовка. У пользователя не должно быть высказывания в нем в данный момент.
Не могли бы вы объяснить мне, где моя логика дает сбой и в чем ошибка, чтобы я мог четко понять проблему и избежать этих ошибок новичков в будущем?