Вопрос по – В админке Django, могу ли я требовать поля в модели, но не когда она встроена?

9

В django admin есть поля, которые мне бы хотелось заполнить, если модель редактируется автономно. Если он встроенный, я не хочу, чтобы он был необходим. Есть ли способ сделать это?

Ваш Ответ

2   ответа
10

пределением обязательного поля для установки required = True и используйте ее в своем классе администратора.

class MyForm(forms.ModelForm):
    required_field = forms.CharField(required=True)

    class Meta:
        model = MyModel

class MyAdmin(admin.ModelAdmin):
    form = MyForm


class MyInlineAdmin(admin.ModelAdmin):
    model = MyModel

Таким образом, здесь MyAdmin использует переопределенную форму, но MyInlineAdmin - это не так.

21

это не лучшее решение. Это требует небольшого дублирования кода, поскольку необходимо повторно объявить поле формы. Например, если у вас былverbose_name на этом поле, вы также должны были бы добавитьlabel='My verbose_name already set on model' кCharField линии, поскольку повторное объявление всего поля в основном стирает все, что установлено в вашей модели для этого поля.

Лучший подход состоит в том, чтобы переопределить формы__init__ метод и явно установленfield.required вTrue или жеFalse там.

class MyModelForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(MyModelForm, self).__init__(*args, **kwargs)

        self.fields['myfield'].required = True
Error: User Rate Limit Exceeded

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