У меня есть 3 модели с различными полями в каждом. Для 2 моделей, я отлично использую общую форму (через Django's create_object) для запроса данных. Я написал функцию, которая принимает название модели и отправляет пользователя в общей формеDjango: отображение общей модели модели или предопределенной формы
url(r'^add_(?P<modelname>\w+)/$', generic_add),
def generic_add(request, modelname):
mdlnm_model = models.get_model('catalog',modelname)
return create_object(request,
model = mdlnm_model,
template_name = 'create.html',
post_save_redirect = '/library/',
extra_context = {'func': 'Create ' + modelname},
login_required = 'True'
)
Для 3-й модели, я класс ModelForm определяется так, что я могу пропустить одно из полей в этой модели, когда пользователь видит форму.
url(r'^create_actor/$', create_object, Actor_Input, name='db_actor_create'),
Actor_Input = {
'form_class': ActorForm,
'template_name': 'create.html',
'post_save_redirect': '/library/',
'extra_context': {'func': 'Create Actor'},
'login_required': 'True'
}
class ActorForm(forms.ModelForm):
class Meta:
model = Actor
fields = ('name','age','height','short_description',
'long_description')
Есть ли способ для Django, чтобы отобразить определенный ModelForm, если она существует, но в остальном полностью отобразить общий вид, если определенная форма не была сделана? Я ожидаю создания еще многих моделей и не буду создавать URL-адрес для каждой отдельной модели, которая должна быть разделена так, как это делается.
Итак, по-другому, я хочу изменить функцию generic_add, чтобы он использовал ActorForm (если он существует), но в противном случае общий ModelForm. Я знаю, как проверить существование класса ActorForm, но что, если я хочу, чтобы это было динамичным? Что-то вроде проверки, если: modelname + 'Form' существует. Я не уверен, как динамически отправлять пользователя в предопределенную форму, если таковая существует.
Любые предложения? Есть ли лучший способ взглянуть на эту проблему?
У меня тяжелое время, следуя тому, что вы пытаетесь выполнить в целом из своего описания. Удобно ли вы вставлять соответствующие биты в мусорный контейнер где-то, чтобы мы могли видеть, что у вас есть до сих пор? –
Извинения, см. Пересмотренный вопрос –