【问题标题】:Updating Model Instance with Django使用 Django 更新模型实例
【发布时间】:2018-03-25 21:25:00
【问题描述】:

我正在使用 CreateView1 启动 Estate 实例。它工作正常,即使它是一个模板视图!现在我想被重定向到 UpdateView2 并更新这些字段(我有一个很好的理由)。如何将实例 1 的 pk 传递给第二个视图,以及如何编辑这些字段?任何帮助将不胜感激!

views.py

class CreateView1 (TemplateView):
    template_name = 'estate_form1.html'

    def get(self,request):
        form = RegisterForm()
        args = {'form': form,}
        return render(request, self.template_name, args)

    def post(self,request):
        form = RegisterForm(request.POST)
        if form.is_valid():
            estate = form.save(commit=False)
            estate.save()
            form = RegisterForm()
            return redirect('register:update2')
        args = {'form': form,}
        return render(request, self.template_name, args)

class UpdateView2(UpdateView):
    template_name = 'estate_form2.html'
    model = Estate
    fields = ["price", "area"]

estate_form1.html 和 Estate_form2.html

<form method="post">
  {% csrf_token %}
  {{ form.as_p }}
  <button type="submit">Submit</button>
</form>

forms.py

class RegisterForm(forms.ModelForm):
    price = forms.IntegerField(label="Price:")
    area = forms.IntegerField(label="Area:")

    Class Meta:
       model = Estate
       fields = ('price', 'area')

已经感谢您的支持!

【问题讨论】:

  • 你使用的是哪个版本的 Django?
  • 从您的重定向代码来看,它看起来像 2.0。
  • 你能发布你的 urls.py 文件吗?

标签: python django class view


【解决方案1】:

将 id 作为参数添加到 CreateView1 中的重定向函数。

    def post(self, request):
        form = RegisterForm(request.POST)
        if form.is_valid():
            estate = form.save(commit=False)
            estate.save()
            form = RegisterForm()
            return redirect('register:update2', pk=estate.id)

然后确保您的 url.py 文件已设置为接收 id。它看起来像:

    path('register/<int:pk>/', UpdateView2.as_view(), name='update2'),

我不确切知道您要做什么,但作为补充说明,我会考虑使用 CreateView 而不是 TemplateView。这将允许您使用 success_url 进行重定向。

【讨论】:

    猜你喜欢
    • 2022-01-04
    • 2021-05-04
    • 1970-01-01
    • 2016-02-15
    • 2019-08-17
    • 2018-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多