Django form_valid 错误。谁能找到错误?
Django form_valid error. Can anyone find the error?
我正在尝试在 CreateView
上使用 URL 中的值
我的模型是这样的:类别 > 系列
我做了一个 URL path('nova-serie/<categoria>', NovaSerie.as_view(), name='nova_serie'),
URL创建一个新的Serie是这样的:/nova-serie/3
我正在尝试使用 form_valid
,但我收到了这条消息:
无法分配“'3'”:“Serie.categoria”必须是“Categoria”实例。
views.py
class NovaSerie(CreateView):
model = Serie
form_class = SerieForm
template_name = 'nova_serie.html'
success_url = reverse_lazy('home')
def form_valid(self, form):
url = self.request.path_info
parte_final_url = url.replace('/nova-serie/', '')
form.instance.categoria = parte_final_url
return super(NovaSerie).form_valid(form)
forms.py
class SerieForm(forms.ModelForm):
class Meta:
model = Serie
fields = (
'serie',
)
widgets = {
'title': forms.TextInput(), # attrs={class="title"}
}
这里有人可以帮我吗?
路径不需要做字符串处理。您可以使用 self.kwargs
获取 URL 参数。此外,如果要指定 .categoria
的 id
,则应设置 .categoria_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<b>.categoria_id = self.kwargs['categoria']</b>
return super().form_valid(form)
我还建议将 categoria
URL 参数指定为 int
:
path('nova-serie/<<b>int:</b>categoria>', NovaSerie.as_view(), name='nova_serie'),
这样,如果值不是整数,则不会触发视图。
我正在尝试在 CreateView
上使用 URL 中的值我的模型是这样的:类别 > 系列
我做了一个 URL path('nova-serie/<categoria>', NovaSerie.as_view(), name='nova_serie'),
URL创建一个新的Serie是这样的:/nova-serie/3
我正在尝试使用 form_valid
,但我收到了这条消息:
无法分配“'3'”:“Serie.categoria”必须是“Categoria”实例。
views.py
class NovaSerie(CreateView):
model = Serie
form_class = SerieForm
template_name = 'nova_serie.html'
success_url = reverse_lazy('home')
def form_valid(self, form):
url = self.request.path_info
parte_final_url = url.replace('/nova-serie/', '')
form.instance.categoria = parte_final_url
return super(NovaSerie).form_valid(form)
forms.py
class SerieForm(forms.ModelForm):
class Meta:
model = Serie
fields = (
'serie',
)
widgets = {
'title': forms.TextInput(), # attrs={class="title"}
}
这里有人可以帮我吗?
路径不需要做字符串处理。您可以使用 self.kwargs
获取 URL 参数。此外,如果要指定 .categoria
的 id
,则应设置 .categoria_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<b>.categoria_id = self.kwargs['categoria']</b>
return super().form_valid(form)
我还建议将 categoria
URL 参数指定为 int
:
path('nova-serie/<<b>int:</b>categoria>', NovaSerie.as_view(), name='nova_serie'),
这样,如果值不是整数,则不会触发视图。