У меня есть простая модель, которая определяется как:
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()
Создание новой записи прекрасно, однако, когда я пытаюсь обновить любое из этих полей, проверка уже не проходит.
Свойство "errors" не имело ничего, но я попал в отладчик и глубоко в кистях Django, я увидел это:
slug: "Статья с этим Нет уже существует"
Итак, похоже, что is_valid() терпит неудачу при проверке уникального значения, но все, что я хочу сделать, это update строка.
Я не могу просто сделать:
form.save(force_update=True)
... потому что форма не будет проверена.
Это похоже на что-то очень простое, но я просто не могу понять.
Я запускаю Django 1.0.2
Какими кроями является BaseModelForm.validate_unique(), который вызывается при инициализации формы.