У меня есть образцовая форма, которую я использую для обновления модели.
class Turtle(models.Model):
name = models.CharField(max_length=50, blank=False)
description = models.TextField(blank=True)
class TurtleForm(forms.ModelForm):
class Meta:
model = Turtle
Иногда я не должен обновлять всю модель, но только хотеть обновить одно из полей. Таким образом, когда у меня POST форма только есть информация для описания. Когда я делаю это, модель никогда не сохраняет, потому что она думает, что имя заменяется пустым местом, в то время как мое намерение состоит в том, что имя не изменяется и просто используется из модели.
turtle_form = TurtleForm(request.POST, instance=object)
if turtle_form.is_valid():
turtle_form.save()
Там какой-либо путь состоит в том, чтобы заставить это произойти?Спасибо!
Используйте только указанные поля:
class FirstModelForm(forms.ModelForm):
class Meta:
model = TheModel
fields = ('title',)
def clean_title(self....
Обычно используются разные ModelForms для модели в разных представлениях, когда вам нужны разные функции. Итак, создав другую форму для модели, которая использует такое же поведение (скажем, clean_
методы и т. Д.), Используйте:
class SecondModelForm(FirstModelForm):
class Meta:
model = TheModel
fields = ('title', 'description')
Если вы не хотите обновлять поле, удалите его из формы с помощью кортежа Meta exclude
:
class Meta:
exclude = ('title',)