将模型从url传递到create_object泛型输入视图

时间:2010-03-02 17:54:06

标签: django url variables django-generic-views

我有多个模型,我想为其创建通用输入。我的第一次使用了两个不同的网址:

url(r'^create_actor/$, create_object, {'model': Actor, 'template_name': 'create.html', 'post_save_redirect': '/library/', 'extra_context': {'func': 'Create Actor'}, 'login_required': 'True'}),

url(r'^create_movie/$, create_object, {'model': Movie, 'template_name': 'create.html', 'post_save_redirect': '/library/', 'extra_context': {'func': 'Create Movie'}, 'login_required': 'True'}),

我认为将这些组合成一个语句会好得多。我不确定如何将url中的变量传递给参数,以便该行可以根据变量动态选择模型。

2 个答案:

答案 0 :(得分:0)

我没试过这个,但你可以使用变量来捕获create_之后的值,并让它自动发送到create_object视图:

url(r'url(r'^create_(?P<model>\w+)/$, create_object, {'template_name': 'create.html', 'post_save_redirect': '/library/', 'login_required': 'True'})

您必须以/ create_Actor /而不是/ creat_actor /访问此网址。我不知道如何让extra_context键工作。 希望这会有所帮助。

答案 1 :(得分:0)

from django.db import models

url(r'^create_(?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/',
       login_required = 'True'
    )