Python 如何在URL上设置外键并在django CreateView上使用它

Python 如何在URL上设置外键并在django CreateView上使用它,python,django,django-class-based-views,django-generic-views,Python,Django,Django Class Based Views,Django Generic Views,谢谢你的时间 如果有人能帮我获取URL上显示的外键并在Django CreateView上使用它 我正在尝试创建一个简单的应用程序来组织立法。为此,我的数据库中有这样一个关系:Categoria有许多系列,系列有许多帖子 我已经把url.py的一条路径做成了这样 (...) path('nova-serie/<categoria>', NovaSerie.as_view(), name='nova_serie'), (...) 型号.py 类别A(models.Model): c

谢谢你的时间

如果有人能帮我获取URL上显示的外键并在Django CreateView上使用它

我正在尝试创建一个简单的应用程序来组织立法。为此,我的数据库中有这样一个关系:Categoria有许多系列,系列有许多帖子

我已经把url.py的一条路径做成了这样

(...)
path('nova-serie/<categoria>', NovaSerie.as_view(), name='nova_serie'), 
(...)
型号.py

类别A(models.Model):
categoria=models.CharField(
max_length=200,verbose_name=“Nome da categoria”,help_text=“colocar aqui o texto de ajuda”)
类元:
详细的\u名称\u复数=“分类”
详细名称=“分类”
定义(自我):
返回自我分类
类别系列(型号.型号):
serie=models.CharField(
max_length=200,verbose_name=“Série”,help_text=“colocar aqui o texto de ajuda”)
categoria=models.ForeignKey(categoria,default=1,on\u delete=models.SET\u default)
类元:
详细名称复数=“系列”
定义(自我):
返回self.serie
forms.py

class系列表单(forms.ModelForm):
类元:
型号=系列
字段=(
“意甲”,
"范畴",,
)
小部件={
“title”:forms.TextInput(),#attrs={class=“title”}
'categoria':forms.TextInput(attrs={'class':'green','value':object}),#attrs={class=“title”}
}
类别类别窗体(forms.ModelForm):
类元:
模型=分类
字段=(
"范畴",,
)
小部件={
“title”:forms.TextInput(),#attrs={class=“title”}
}
如果你发现这个帖子有任何问题,请告诉我。我很乐意改变它


谢谢。

要实现这一点,我们基本上需要做两件事:

  • url.py
    上,我们需要告诉Django它是一个整数
  • 在views.py上使用
    表格\u valid
  • url.py 因此,您的urls.py应该有如下内容:

    path('nova-serie/',NovaSerie.as_view(),name='nova_serie'),
    
    views.py 有了这些改变,我才得以实现

    我是一个新手,如果我要编辑或删除这篇文章,请让我知道

    Willem Van Onsem先生给出了解决方案

    我很乐意

    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)