Вы можете сделать это в своем представлении или переопределить метод сохранения формы.Если вы сделаете это, по вашему мнению, это будет выглядеть примерно так:
#views.py
from django.template.defaultfilters import slugify
def post_create(request, ...):
...
if request.method == 'POST':
form = PostForm(request.POST)
if form.is_valid():
post = form.save(commit=False)
title = form.cleaned_data['title']
slugified_title = str(slugify(title))
post.url = [modify the slugified_title however you want...]
post.save()
...
В качестве альтернативы вы можете переопределить метод сохранения вашей формы, который будет выглядеть примерно так:
#forms.py
class PostForm(django.forms.ModelForm):
class Meta:
model=Post
exclude=['url']
def save(self, commit=True, force_insert=False, force_update=False):
post = super(PostForm, self).save(commit=False)
slugified_title = str(slugify(post.title))
post.url = [modify the slugfield_title however you want...]
post.save()