相关疑难解决方法(0)

需要澄清使用Django 1.4 Form Wizards,特别是预填充和保存

我们正在使用Django 1.4的新表单向导功能构建向导.
关于此的文档非常简洁,我们找不到任何高级示例.我们正在使用一个命名步骤向导(需要支持我们使用的listview/datagrid)和一个会话后端.该向导用于编辑角色和链接权限,旨在提供添加和编辑功能.我们通过在第一步询问用户是否要添加或编辑来执行此操作.

下一步取决于该选择; 如果用户想要编辑,则会有一个搜索屏幕,后面是一个显示结果的listview/datagrid.然后,用户可以选择其中一个结果并转到详细信息屏幕,然后是FilteredSelectMultiple页面,允许他/她将权限链接到此角色.

如果用户想要添加新角色,则跳过搜索和结果屏幕,用户直接进入详细信息屏幕,然后是链接屏幕.
这一切都运行得很好,在urls.py中使用了condition_dict,但是我们想知道关于一般功能的一些事情:

选择特定的预先存在的角色后,如何使用相应的数据填充详细信息和链接屏幕?

我们是否实例化一个角色对象并以某种方式将它传递给两个表单,如果是这样,我们在哪里实例化它,我们是否需要分别对每个表单执行此操作(这看起来有点过头了)?

保存时,通常的做法是创建角色对象的另一个实例,将表单数据添加到它并保存,或者我们可以以某种方式重新使用表单中使用的对象吗?

我们已经尝试重载get_form_instance以返回角色的实例,我们已经在文档中查看了instance_dict,但感觉这是错误的方法,并且没有在网上找到的例子,我们甚至不确定这些是用于预先 - 填写数据或即使我们走在正确的轨道上.

从逻辑上讲,我会在选择现有角色的步骤中说,我需要使用所选对象的实例来填充向导变量,这些将显示在表单中.在向导结束时,我们反转该过程并从向导变量中获取所有数据,并将它们添加到新实例化的角色对象中并保存.理想情况下,如果需要执行INSERT或UPDATE,此实例将自行确定,具体取决于是否填充了前缀键.

如果任何人都可以提供一个例子,或者在正确的方向上轻推,那将非常感激.

views.py中wizardview类的代码如下:

class RolesWizard(NamedUrlSessionWizardView):

def get_template_names(self):
    # get template for each step...
    if self.steps.current == 'choice':
        return 'clubassistant/wizard_neworeditrole.html'
    if self.steps.current == 'search':
        return 'clubassistant/wizard_searchrole.html'
    if self.steps.current == 'results':
        return 'clubassistant/wizard_pickrole.html'
    if self.steps.current == 'details':
        return 'clubassistant/wizard_detailsrole.html'
    elif self.steps.current == 'rights':
        return 'clubassistant/wizard_roles.html'

def get_context_data(self, form, **kwargs):
    # get context data to be passed to the respective …
Run Code Online (Sandbox Code Playgroud)

django django-forms django-formwizard

5
推荐指数
1
解决办法
3414
查看次数

标签 统计

django ×1

django-forms ×1

django-formwizard ×1