Как я могу обновить только определенные поля в форме модели 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

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

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

Там какой-либо путь состоит в том, чтобы заставить это произойти?Спасибо!

10
задан J. Frankenstein 15 June 2010 в 17:57
поделиться

2 ответа

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

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

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

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

class SecondModelForm(FirstModelForm):
    class Meta:
        model = TheModel
        fields = ('title', 'description')
9
ответ дан 4 December 2019 в 01:29
поделиться

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

class Meta:
    exclude = ('title',)
1
ответ дан 4 December 2019 в 01:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: