Джанго, переопределяя ManyToManyField - PullRequest
1 голос
/ 09 февраля 2011

Я собираю свой собственный виджет на основе ManyToManyRawIdWidget.

Но как только я попробую следующее в моем ModelAdmin:

formfield_overrides = {
    ManyToManyField: {'widget': ManyToManyRawIdWidget},
}

Это подскажет мне

__init__() takes exactly 2 arguments (1 given)

Я решил, что мне нужно заполнить аргумент rel чем-то, вероятно, моделью отношений (которая является Tag моделью)

Но затем я сталкиваюсь с TemplateSyntaxError:

Caught AttributeError while rendering: type object 'Tag' has no attribute 'to'

Здесь я теряю контроль. Может ли кто-нибудь помочь мне?

1 Ответ

0 голосов
/ 09 февраля 2011

Просто хочу убедиться, что вы учли это предупреждение в документации для formfield_overrides :

Внимание

Если вы хотите использовать собственный виджет с полем отношения (т.е. ForeignKey или ManyToManyField), убедитесь, что вы не включил имя этого поля в raw_id_fields или radio_fields.

formfield_overrides не позволит вам изменить виджет на полях отношения которые имеют raw_id_fields или радио_поля установлены. Это потому что raw_id_fields и radio_fields подразумевают собственные виджеты.

Я не знаю о ManyToManyRawIdWidget, но, судя по его имени, я предполагаю, что raw_id_fields может быть установлен в этом случае? Возможно, поэтому он не работает.

...