2009-06-29 3 views

답변

16

Daniel Roseman의 답변이 효과가 있지만 가장 좋은 해결책은 아닙니다. 양식 필드를 다시 선언해야하므로 약간의 코드 중복이 필요합니다. 예를 들어 해당 필드에 verbose_name이있는 경우 CharField 행에 label='My verbose_name already set on model'을 추가해야합니다. 전체 필드를 다시 선언하면 기본적으로 해당 필드의 모델에 설정된 모든 항목이 지워지기 때문입니다.

더 나은 방법은 양식의 __init__ 메서드를 무시하고 명시 적으로 field.requiredTrue 또는 False으로 설정하는 것입니다.

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

     self.fields['myfield'].required = True 
9

확실히. 필요한 필드를 재정 의하여 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은 사용하지 않습니다.

+0

대단히 감사합니다. – Mitch

관련 문제