У меня есть набор специальных форм, которые относятся к одной модели, я определил общее:Джанго образуют как создать простой подмешать
class myBaseFormMixin(forms.Form):
data_prod = forms.DateField(initial=datetime.date.today, label='Data')
class Meta:
model = mymodel
def clean(self):
if self.data["a"]=='off':
raise forms.ValidationError("check A")
затем в моем specialform добавил:
class SpecialManForm(forms.ModelForm,myBaseFormMixin)
def __init__(self, *args, **kwargs):
super(SpecialManForm, self).__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.layout = Layout(
Fieldset(
'Description',
Row(
Div('field_a', css_class='large-3 columns '),
),
),
все в порядке, по-видимому, в форме все поля из модели в Meta Mixin доступны, но чистые() из Mixin не выполняется, это будет работать, если я добавляю в четкости гр lean() в SpecialManForm, почему это происходит?
Я что-то упустил? заранее спасибо
Так у вас есть дополнительный класс, который на самом деле не нужен сейчас. –
Зачем ты так говоришь? только один класс используется в качестве базы для других ... так: SpecialManForm -> ModelForm -> myBaseFormMixin, стал SpecialManForm -> myBaseFormMixin – user2239318
Ну, вы спросили, как использовать mixins, и вот что мой ответ показал вам, как это сделать. Они эффективно выполняют одно и то же, но мое решение использует меньше кода и создает меньше классов. –