i can’t generate slug to my post model
model
class Post(models.Model):
id = models.UUIDField(default=uuid.uuid4, editable=False, unique=True, primary_key=True)
slug = models.SlugField(max_length=200, db_index=True, unique=True, editable=False) # add unique=True in slug (never repeat)
title = models.CharField(max_length=200, db_index=True, blank=False, default='')
snippet = models.OneToOneField(Snippet, on_delete=models.CASCADE, related_name='post_snippets', blank=True, null=True)
creator = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name="post_creator")
...
def get_absolute_url(self):
"""Returns the url to access a particular post instance."""
return reverse('details', kwargs={ "id": str(self.id), "slug": self.slug})
def save(self, *args, **kwargs):
if not self.slug:
self.slug = slugify(self.title)
img = Image.open(self.post_img.path)
return super(Post, self).save(*args, **kwargs)
my form
class PostForm(forms.ModelForm):
class Meta:
model = Post
exclude = ('creator', 'snippet')
class SnippetForm(forms.ModelForm):
class Meta:
model = Snippet
fields = '__all__'
my view
@login_required
def add_post(request):
if request.method == 'POST':
post_form = PostForm(request.POST, request.FILES)
snippet_form = SnippetForm(request.POST)
if post_form.is_valid() and snippet_form.is_valid():
post = post_form.save(commit=False)
snpt = snippet_form.save()
post.creator = request.user
post.snippet = snpt
post.save()
snpt.save()
return redirect('blog:index')
else:
post_form = PostForm()
snippet_form = SnippetForm()
return render(request, 'blog/add_post.html', {'post': post_form, 'snpt': snippet_form})
what’s wrong in this logic that cause slug to not be generated
i have tried in admin.py
prepopulated_fields = {'slug': ('title',)}
but it gives
"KeyError at /admin/post/add/ "Key ‘slug’ not found in ‘PostForm’. Choices are: other fields
i really confused on what to do for it to be exist in admin page
I removed the save method from my model and let only the perpetuated line or vice versa but same thing. Do and add some logic in views functions???