Как я могу обновить только определенные поля в форме модели Django?

У меня есть модель, которую я использую для обновления модели.

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

Иногда мне не нужно обновлять всю модель, но только хочу обновить одно из полей. Поэтому, когда я отправляю сообщение, форма содержит только информацию для описания. Когда я делаю это, модель никогда не спасает, потому что она думает, что имя затушевано, в то время как мое намерение заключается в том, что имя не изменяется и просто используется из модели.

    turtle_form = TurtleForm(request.POST, instance=object)
    if turtle_form.is_valid():
        turtle_form.save()

Есть ли способ сделать это? Спасибо!

Ответ 1

Используйте только указанные поля:

class FirstModelForm(forms.ModelForm):
    class Meta:
        model = TheModel
        fields = ('title',)
    def clean_title(self....

См. http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#controlling-which-fields-are-used-with-fields-and-exclude

Обычно для модели в разных представлениях используются разные модели ModelForm, когда вам нужны разные функции. Поэтому, создавая еще одну форму для модели, использующей одно и то же поведение (например, методы clean_<fieldname> и т.д.), Используйте:

class SecondModelForm(FirstModelForm):
    class Meta:
        model = TheModel
        fields = ('title', 'description')

Ответ 2

Если вы не хотите обновлять поле, удалите его из формы через тег Meta exclude:

class Meta:
    exclude = ('title',)