如何仅更新Django模型表单中的某些字段?

J. *_*ein 10 python 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
Run Code Online (Sandbox Code Playgroud)

有时我不需要更新整个模型,但只想更新其中一个字段.因此,当我发布表格时,只有描述信息.当我这样做时,模型永远不会保存,因为它认为名称被删除,而我的意图是名称不会改变,只是从模型中使用.

    turtle_form = TurtleForm(request.POST, instance=object)
    if turtle_form.is_valid():
        turtle_form.save()
Run Code Online (Sandbox Code Playgroud)

有没有办法让这种情况发生?谢谢!

maw*_*awi 9

仅使用指定的字段:

class FirstModelForm(forms.ModelForm):
    class Meta:
        model = TheModel
        fields = ('title',)
    def clean_title(self....
Run Code Online (Sandbox Code Playgroud)

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

当您需要不同的功能时,通常在不同视图中对模型使用不同的ModelForms.因此,为使用相同行为(比如clean_<fieldname>方法等)的模型创建另一个表单使用:

class SecondModelForm(FirstModelForm):
    class Meta:
        model = TheModel
        fields = ('title', 'description')
Run Code Online (Sandbox Code Playgroud)