如何解决如何在URL上获取外键集并在django CreateView上使用它 url.py views.py
感谢您的时间...
如果有人可以帮助我获取显示在URL上的外键并在Django CreateView上使用它。
我正在尝试创建一个简单的应用来组织立法。为此,我在数据库中具有这种关系:类别有很多Series,而Series有很多帖子。
我已经这样完成 urls.py 的一条路径
(...)
path('nova-serie/<categoria>',NovaSerie.as_view(),name='nova_serie'),(...)
我只想传递从URL中获取值并另存为外键,而无需用户再次输入。
view.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')
models.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
forms.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',# attrs={class="title"}
}
如果您发现此帖子有任何问题,请告诉我。我将很高兴进行更改。
谢谢。
解决方法
要做到这一点,我们基本上需要做两件事:
- 在
url.py
上,我们需要告诉Django这是一个整数 - 在views.py上使用
form_valid
url.py
因此您的urls.py应该具有以下内容:
path('nova-serie/<int:categoria>',NovaSerie.as_view(),name='nova_serie'),
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):
form.instance.categoria_id = self.kwargs['categoria']
return super().form_valid(form)
有了这些更改,我得以实现它!
我是新手,如果要编辑或删除此信息,请告诉我
解决方案是由先生给的。 @Willem Van Onsem
我会很高兴buy you a coffee!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。