Python Django form_有效错误。有人能找到错误吗?
我正在尝试使用CreateView上URL中的值 我的模型是这样的:Categoria>Serie 我制作了一个URL,它的路径是Python Django form_有效错误。有人能找到错误吗?,python,django,django-forms,django-generic-views,Python,Django,Django Forms,Django Generic Views,我正在尝试使用CreateView上URL中的值 我的模型是这样的:Categoria>Serie 我制作了一个URL,它的路径是path('nova-serie/',NovaSerie.as_view(),name='nova_serie'), 创建新系列的URL如下所示:/nova Serie/3 我正在尝试使用表单\u valid,但我收到以下消息: 无法分配“'3'”:“Serie.categoria”必须是“categoria”实例。 views.py class NovaSerie(
path('nova-serie/',NovaSerie.as_view(),name='nova_serie'),
创建新系列的URL如下所示:/nova Serie/3
我正在尝试使用表单\u valid
,但我收到以下消息:
无法分配“'3'”:“Serie.categoria”必须是“categoria”实例。
views.py
class NovaSerie(CreateView):
型号=系列
形式=系列形式
模板名称='nova\u serie.html'
success\u url=reverse\u lazy('home'))
def表单_有效(自身、表单):
url=self.request.path\u info
parte_final_url=url.replace('/nova serie/','')
form.instance.categoria=parte_final_url
返回super(NovaSerie)。表格有效(表格)
forms.py
class系列表单(forms.ModelForm):
类元:
型号=系列
字段=(
“意甲”,
)
小部件={
“title”:forms.TextInput(),#attrs={class=“title”}
}
这里有人能帮我吗?不需要在路径上进行字符串处理。您可以使用
self.kwargs
获取URL参数。此外,如果要指定.categoria
的id
,则应设置.categoria\u id
:
class NovaSerie(CreateView):
model = Serie
form_class = SerieForm
template_name = 'nova_serie.html'
success_url = reverse_lazy('home')
def form_valid(self, form):
form.instance.categoria_id = self.kwargs['categoria']
return super().form_valid(form)
这样,如果值不是整数,则不会触发视图。在url路径中,它必须包含数据类型,例如:
path('patient/appointment//update/',patientPointmentUpdateView.as_view(),name=“patientPointmentUpdate”),
查看我的,它显示我输入并发送一个int,它将是主键。@bryant谢谢。。。但它不是主键。。。在我的情况下是一个外键…谢谢分享这个。。。但是随着这些更改,Django向我发送了一条错误消息:“super”对象没有“form_valid”属性@andrenavares:是的,您使用的super
方法错误。在Python-2.x中,它与self
,但在Python-3.x中,您可以简单地使用super()
。消息错误:外键约束失败class NovaSerie(CreateView):model=Serie form\u class=SerieForm template\u name='nova\u Serie.html'success\u url=reverse\u lazy('home')def form\u valid(self,form):form.instance.categoria\u id=self.kwargs['categoria']return super()。form\u valid(form)
感谢您抽出时间。。。我真的很感激it@AndreNevares:这意味着不存在id=3的Categoria
,因此URL不包含可引用的有效内容。
path('nova-serie/<int:categoria>', NovaSerie.as_view(), name='nova_serie'),