2012-02-23 2 views
1

Я думаю, что это может быть ошибка в modelformset_factory в Django 1.2, но я бы хотел, чтобы кто-нибудь еще дважды проверял это (возможно, в новых версиях djnago).modelformset_factory исключает слишком много полей

Just for the courious people - модели представляют собой возможные баллы и наборы из них, доступные для отчетов о подготовке работников.

models.py:

class ScoreSet(Model): 
    unit = ForeignKey(Unit) 
    description = CharField(max_length=20, verbose_name='description') 

class Score(Model): 
    scoreset = ForeignKey(ScoreSet) 
    score = CharField(max_length=8, verbose_name='score') 
    description = CharField(max_length=30, verbose_name='description') 

и теперь:

FormSet = modelformset_factory(Score, exclude='scoreset', extra=5, can_delete=True) 

будет производить formset, не scoreset и без очков поле. Если вы измените имя поля «scoreset» на что-нибудь еще (например, «ss»), он отлично работает и исключает только поле «ss».

ответ

1

Исключить должен быть кортежем, а не строка:

exclude=('scoreset',) 
+0

Вы правы. Благодарю. В любом случае это странное поведение, которое exclude = 'scoreset' работает, и исключает как «score», так и «scoreset», в то время как exclude = 'ss' исключает только 'ss'. – Marek

+0

Если вы используете неправильные типы в Python, вы можете получить неожиданное поведение. В этом случае обратите внимание на то, что 'score in 'scoreset'' оценивается как True, но' score in' ss'' этого не делает. – Alasdair