Как не заполнять поля формы параметром экземпляра django
Я хочу написать функцию представления для редактирования записи в блоге. И мне интересно, как указать Django, какой объект нужно изменить в базе данных, используя параметр экземпляра без предварительного заполнения формы.
Модель BlogPost
class BlogPost(models.Model):
title = models.CharField(max_length=200)
text = models.TextField()
date_added = models.DateField(auto_now_add=True)
def __str__(self):
return self.title[:50]
Форма модели
class BlogPostForm(forms.ModelForm):
class Meta:
model = BlogPost
fields = ["title", "text"]
labels = {"title": "", "text": ""}
Функция просмотра
def edit_post(request, post_id):
post = BlogPost.objects.get(id=post_id)
if request.method != "POST":
form = BlogPostForm(instance=post)
else:
form = BlogPostForm(instance=post, data=request.POST)
if form.is_valid():
form.save()
Насколько я понял, параметр instance указывает Django, какой объект модифицировать в базе данных с помощью метода form.save().
Но как это сделать без предварительного заполнения формы?
Самое простое решение - установить начальное значение для title
и text
в пустую строку
def edit_post(request, post_id):
post = BlogPost.objects.get(id=post_id)
if request.method != "POST":
form = BlogPostForm(instance=post, initial={'title':'', 'text':''})
else:
form = BlogPostForm(instance=post, data=request.POST)
if form.is_valid():
form.save()
Форма не должна заполняться сейчас