【问题标题】:Is there any way to combine CreateView and UpdateView?有什么方法可以结合 CreateView 和 UpdateView?
【发布时间】:2016-06-05 06:33:28
【问题描述】:

如果模型中不存在任何项目,我想显示CreateView 中存在的表单。否则我需要显示表单存在于UpdateView 中。这样它就会加载已经保存的值。稍后我应该通过调用update_or_create 方法将数据保存到数据库。

这可能吗?

【问题讨论】:

    标签: python django django-forms


    【解决方案1】:

    添加第三个视图将重定向到 CreateView 或 EditView。

    它应该看起来像这样:

    from django.core.urlresolvers import reverse
    
    class AddItemView(generic.CreateView):
        ...
    
    class EditItemView(generic.EditView):
        ...
    
    class UpdateItemRedirectView(generic.RedirectView):
    
       def get_redirect_url(self):
    
             if Item.objects.get( ...criteria... ).exists():
                  return reverse("url_name_of_edit_view")
             else:
                  return reverse("url_name_of_add_view")
    

    【讨论】:

      【解决方案2】:

      @AviahLaor 提到的另一个“双重目的”视图解决方案是将CreateViewUpdateView 组合在一个视图中。在我看来,它是 DRYer。解决方案给here很好。

      【讨论】:

        猜你喜欢
        • 2019-11-04
        • 1970-01-01
        • 2013-06-17
        • 1970-01-01
        • 2015-06-25
        • 1970-01-01
        • 2011-11-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多