Как я могу обновить только определенные поля в форме модели Django? - PullRequest
10 голосов
/ 15 июня 2010

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

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

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

Ответы [ 2 ]

9 голосов
/ 15 июня 2010

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

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

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

class SecondModelForm(FirstModelForm):
    class Meta:
        model = TheModel
        fields = ('title', 'description')
1 голос
/ 15 июня 2010

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

class Meta:
    exclude = ('title',)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...