У меня есть простая модель, которая определяется как:
class Article(models.Model):
slug = models.SlugField(max_length=50, unique=True)
title = models.CharField(max_length=100, unique=False)
и форма:
class ArticleForm(ModelForm):
class Meta:
model = Article
Проверка здесь завершается неудачно, когда я пытаюсь обновить существующую строку:
if request.method == 'POST':
form = ArticleForm(request.POST)
if form.is_valid(): # POOF
form.save()
Создание новой записи - это хорошо, однако, когда я пытаюсь обновить любое из этих полей, проверка больше не проходит.
Свойство «ошибки» не имело ничего, но я упал в отладчик и, глубоко в духе Джанго, увидел следующее:
slug: «Статья с этим None уже существует»
Таким образом, похоже, что is_valid () завершается неудачно при проверке уникального значения, но все, что я хочу сделать, это обновить строку.
Я не могу просто сделать:
form.save(force_update=True)
... потому что форма не пройдёт проверку.
Это выглядит как нечто очень простое, но я просто не могу понять это.
Я использую Django 1.0.2
Что квакает, это BaseModelForm.validate_unique (), которая вызывается при инициализации формы.