django - Django FormView在success_url中传递pk
问题描述
假设我有以下 FormView 并且我想在item.pk
提交表单后将其传递给其他视图。我想我必须编辑get_success_url()
,但我什至不知道如何item.pk
从form_valid()
:
模型.py
from django.db import models
class Book(models.Model):
field1 = models.CharField(max_length=32)
field2 = models.CharField(max_length=32)
field3 = models.CharField(max_length=32)
def __str__(self):
return self.field1
表格.py
from django import forms
from .models import Book
class SomeForm(forms.ModelForm):
field_order = ['field3', 'field2', 'field1']
class Meta:
model = Book
fields = ['field1', 'field2', 'field3']
视图.py
from django.shortcuts import render
from django.views.generic.edit import FormView
from .forms import SomeForm
class SomeView(FormView):
form_class = SomeForm
template_name = 'appname/form.html'
success_url = reverse_lazy('somewhere')
def form_valid(self, form):
# save in Database
item = form.save()
# item.pk stores the saved pk
return super().form_valid(form)
def get_success_url(self)
# how can i get item.pk from form_valid() here and pass it to another view?
解决方案
你可以像下面这样
class SomeView(FormView):
form_class = SomeForm
template_name = 'appname/form.html'
success_url = reverse_lazy('somewhere')
pk = None
def form_valid(self, form):
item = form.save()
self.pk = item.pk
return super(SomeView, self).form_valid(form)
def get_success_url(self):
#print(self.pk)
return reverse('some_url', kwargs={'pk': self.pk})
推荐阅读
- python - 来自python数组的组织表
- r - 如何使用 API 和 R 从网站获取数据?
- python - 烧瓶 SQLAlchemy 中的表单删除方法不起作用
- flutter - 强制将文本保留到下一行
- google-cloud-platform - 是否可以将可以访问谷歌云功能 URL 的 IP 地址列入白名单
- c# - IsValid 方法在 MVC 中的自定义必需验证属性中不起作用,并且我没有使用 ModelState.IsValid
- reactjs - 如何更改购物篮中特定商品的数量?
- wpf - TemplateBinding 作为 InvokeCommandAction CommandParameter 不起作用?
- mysql - Mysql 查看复杂
- c# - 无法使用 XAML 在 UWP C++ 项目上设置背景图像