Потребовалось мне создать довольно много форм из моделей. Но копипастить для каждой модели свой класс, просто указывая в параметре model нужную форму как-то не есть хорошо. Задался вопросом: Как передать в класс формы только название модели и получить на выходе форму. Вот что вышло:
В forms.py
В forms.py
from django.db.models.loading import get_model class StandartForm(forms.ModelForm): def __init__(self, model, *args, **kwargs): # model - это то, что у нас передается в форму, при вызове, например из views.py: form = StandartForm('model_name') super(StandartForm, self).__init__(*args, **kwargs) self._meta.model = get_model('app_label', model.title()) # меняем на нужную модель class Meta: model = AnyModel # задается любая существующая модельДругого выхода пока не нашел, но работает =)
Нифига не работает. Херню написал
ОтветитьУдалить