Форма Django не отображается, когда используется только одно поле - PullRequest
0 голосов
/ 15 июля 2010

У меня есть модель и форма модели django, которые выглядят так:

-models.py

class Menu_Category(models.Model):
    merchant = models.ForeignKey(Merchant, related_name='menu_categories')
    name = models.CharField(max_length=64)
    test_field = models.CharField(max_length=20)

    def __unicode__(self):
     return self.name

-forms.py

class MenuCategoryForm(ModelForm):
    class Meta:
        model = Menu_Category
        fields = ('name')

ПроблемаЯ испытываю то, что, когда я выбираю только одно поле в форме для отображения (fields = ('name')), форма ничего не отображает, и при этом я не получаю никаких ошибок.Это абсолютно пусто.Однако, когда я добавляю второе поле fields = ('name','test_field'), форма отображает оба поля просто отлично.Существует ли минимальное количество полей, которое может отображать форма?

Заранее спасибо.

1 Ответ

7 голосов
/ 15 июля 2010

Вас укусила обычная ошибка Python.

В этой строке:

fields = ('name')

переменная, которую вы создали, является , а не одноэлементным кортежем, содержащим одну строку «имя». Вместо этого это одна строка, которая является итеративной, поэтому, когда Django пытается перебрать ее, чтобы получить имена полей, он будет думать, что вы установили 'n','a','m','e'.

Чтобы создать одноэлементный кортеж, вам всегда нужна конечная запятая.

fields = ('name',)

(На самом деле, как показывают документы Python, кортеж вообще не кортеж, а запятая.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...