谢谢你的时间...
如果有人可以帮助我获取URL上显示的外键并在Django CreateView上使用它。
我正在尝试创建一个简单的应用程序来组织立法。为此,我在数据库中有这样的关系:分类有很多系列,系列有很多文章。
我已经把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',
)
widgets = {
'title': forms.TextInput(), # attrs={class="title"}
}
如果你发现这篇文章有任何问题,请让我知道。我很乐意改变它。
谢谢。
1条答案
按热度按时间pvabu6sv1#
要做到这一点,我们基本上需要做两件事:
1.在
url.py
上,我们需要告诉Django它是一个整数1.在views.py上使用
form_valid
url.py
所以你的urls.py应该有这样的内容:
views.py
有了这些改变,我才能让它发生!
我是一个新手,如果我应该编辑或删除这个帖子,请让我知道
解决方案是由先生。**威廉·货车·昂塞姆酒店