python - Django - 跨多个 View 形成并保存进度

标签 python django

我正在开发一个 Django 项目,为了使表单体验更加流畅,我想将 ModelForm 分布在几个页面上。如果登录的用户可以在不实际发布内容的情况下在表单中保存他们的进度,那将是理想的(在这种情况下,一个JobApplication,用户可以在其中返回填写信息而无需实际发送申请)。

目前我已经查看了关于 SO 的其他答案,例如 this one ;但这仅向我展示了如何利用缓存在存在表单的 View 之间存储信息。

Models.py(模型、表单和 View 已简化以提高可读性):

class JobApplication(models.Model):
    job = models.ForeignKey(JobPost,on_delete=models.SET_NULL,...)
    user = models.ForeignKey(AUTH_USER_MODEL,...)
    details = models.CharField(max_length=300)
    skills = models.CharField(max_length=300)
    feedback = models.CharField(max_length=300)
    #... [insert more fields] ...

表格.py:

class Application(forms.ModelForm):
    details = forms.CharField() # To go in page 1 of the form process
    skills = forms.CharField() # To go in page 2
    feedback = forms.CharField() # To go in page 3
    class Meta:
        model = JobApplication
        fields = ['details','skills','feedback']

Views.py:

from . import forms
def view1(request):
    form = forms.Application()
    if request.method == 'POST':
        form = forms.Application(data=request.POST)
        ... some logic here which I am not sure of ...
    return render(request, 'view1.html', {})

def view2(request):
    form = forms.Application()
    if request.method == 'POST':
        form = forms.Application(data=request.POST)
        ...
    return render(request, 'view2.html', {})

def view3(request):
    form = forms.Application()
    if request.method == 'POST':
        form = forms.Application(data=request.POST)
        ...
    return render(request, 'view3.html', {})

请注意,我很乐意编辑我的表单或模型来实现这种多页、保存进度效果,您可能会在求职网站上看到这种效果。

如果我可以添加更多有用的代码,请告诉我,因为我不太确定还需要什么。

谢谢!

最佳答案

  1. 我在我的应用程序中有一个类似的用例,我所做的是创建的 多个模型和一个中央 View 控制 表单的进度。

    View 有一个必须传播的表单列表

    GET : /form/<index> => form/0
    POST : Save data to the form
    
  2. 最初表单将没有初始数据,对于索引 > 0 初始数据将是之前保存的模型对象

  3. 当用户点击下一步时,增加 URL 索引计数器,减少 它为上一个,不要在跳过时保存任何内容

这是它的外观要点。 https://gist.github.com/bhavaniravi/b784c57ae9d24fce359ae44e2e90b8e3

I don't know if this is the best optimized method of all times but this is what I did. Any suggestions on improvement is most welcomed

关于python - Django - 跨多个 View 形成并保存进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49338302/

相关文章:

Java - 如何使用 processbuilder 调用 python 类

python - 将旧网址重定向到更清洁的网址

python - 加速 Django 数据库函数以对缺失值进行地理插值

python - 在 Django 中提交表单后停止页面重定向

python - 删除括号替换第一个匹配项

python - 在周期性边界条件的情况下如何在 scipy.interpolate.splprep 中设置手动结?

python - 在 Python 中使用方法 "overloading"设计回调

python - 我可以有一个没有模型的 Django 表单吗

javascript - 将数据从 django View 传递到 javascript

python - 什么是“好的python代码”,这如何满足准则?