谢谢你的时间...
如果有人可以帮助我获取显示在 URL 上的外键并在 Django CreateView 上使用它。
我正在尝试创建一个简单的应用程序来组织立法。为此,我在我的数据库中有这样的关系:类别有很多系列,系列有很多帖子。
我已经像这样制作了urls.py的一个路径
(...)
path('nova-serie/<categoria>', NovaSerie.as_view(), name='nova_serie'),
(...)
我只想通过从 URL 获取值并保存为外键,而无需用户再次输入。
查看.py
class NovaCategoria(CreateView):
model = Categoria
form_class = CategoriaForm
template_name = 'nova_categoria.html'
success_url = reverse_lazy('home')
class NovaSerie(CreateView):
model = Serie
form_class = SerieForm
template_name = 'nova_serie.html'
success_url = reverse_lazy('home')
模型.py
class Categoria(models.Model):
categoria = models.CharField(
max_length=200, verbose_name="Nome da categoria", help_text="colocar aqui o texto de ajuda")
class Meta:
verbose_name_plural = "Categorias"
verbose_name = "categoria"
def __str__(self):
return self.categoria
class Serie(models.Model):
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_delete=models.SET_DEFAULT)
class Meta:
verbose_name_plural = "serie"
def __str__(self):
return self.serie
表格.py
class SerieForm(forms.ModelForm):
class Meta:
model = Serie
fields = (
'serie',
'categoria',
)
widgets = {
'title': forms.TextInput(), # attrs={class="title"}
'categoria': forms.TextInput(attrs={'class': "green", 'value': object }), # attrs={class="title"}
}
class CategoriaForm(forms.ModelForm):
class Meta:
model = Categoria
fields = (
'categoria',
)
widgets = {
'title': forms.TextInput(), # attrs={class="title"}
}
如果您发现这篇文章有任何问题,请告诉我。我会很乐意改变它。
谢谢。
为了实现这一点,我们基本上需要做两件事:
url.py
我们需要告诉Django是it's整数form_valid
所以你的 urls.py 应该是这样的:
path('nova-serie/<int:categoria>', NovaSerie.as_view(), name='nova_serie'),
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)
有了这些改变,我能够让它发生!
我是新手,如果我应该编辑或删除这篇文章,请告诉我
先生给出了解决方案。@Willem Van Onsem
我很乐意请你喝杯咖啡!
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句