Django: переопределение RelatedFieldWidgetWrapper

Я хочу изменить способ, которым "+" показывают значок для внешнего ключа в администраторском сайте.

Я нашел, что виджет, который печатает код, RelatedFieldWidgetWrapper это находится в django/contrib/admin/widgets.py.

Таким образом, я записал свою версию этого класса, и я изменил render функция.

Но теперь как я могу использовать его? Я имею в виду... в определении моей модели, делают я должен использовать formfield_overrides таким образом?

formfield_overrides = {
        models.ForeignKey: {'widget': customRelatedFieldWidgetWrapper},
}

Я думаю, что это не правильный путь, потому что тот виджет не является тем, которые управляют целым внешним ключом, но только "+" значок.Я неправ?

Большое спасибо.

5
задан Giovanni Di Milia 28 January 2010 в 16:21
поделиться

1 ответ

Вам нужно будет создать пользовательские модификации для ModelAdmin и переопределить виджет там.

Пример кода:

#forms.py
class CustomForm(forms.ModelForm):
    user = forms.ModelChoiceField(queryset=User.objects.all(), widget=yourCustomWidget)

class Meta:
    model = MyModel

#admin.py
class MyModelAdmin(admin.ModelAdmin):
     form = CustomForm
4
ответ дан 14 December 2019 в 19:12
поделиться
Другие вопросы по тегам:

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