如何获取在 URL 上设置的外键并在 django CreateView 上使用它

安德烈·内瓦雷斯

谢谢你的时间...

如果有人可以帮助我获取显示在 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"}
        }

如果您发现这篇文章有任何问题,请告诉我。我会很乐意改变它。

谢谢。

安德烈·内瓦雷斯

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

  1. url.py我们需要告诉Django是it's整数
  2. 在 views.py 上使用 form_valid

网址.py

所以你的 urls.py 应该是这样的:

path('nova-serie/<int:categoria>', NovaSerie.as_view(), name='nova_serie'),

视图.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

我很乐意请你喝杯咖啡

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用CreateView在Django表单上设置初始值

Django:如何将 URL 中的外键分配给 Createview 表单

在django vanilla CreateView上设置当前用户

Django的。如何设置默认选项使用通用CreateView

Django从Createview获取PK

如何在使用 Material Design Layout() 功能的 Django CreateView 上放置验证码

如何从 django 中的 CreateView 获取 Id?

Django CreateView get_initial外键

如何子类化Django CreateView

如何使用 Django CreateView 实现依赖下拉列表?

如何使用CreateView在Django中上传多个文件?

Django 1.11 CreateView传递URL参数

使用通用视图(CreateView)在Django中限制外键下拉列表中的选择

在同一 url 上使用 CreateView 和 ListView 时未保存数据

如何仅获取外键django过滤器上的最新记录

如何使用Bootstrap使图像响应并在wordpress上使用它?

Django Createview外键字段的默认值

Django createview创建没有外键的额外实例

选择字段中的Django CreateView过滤器外键

如何使用外键设置Django模型继承

如何在Django模型外键上添加条件?

如何在 django 的外键字段上运行 _icontains 方法

Django CreateView:在验证之前设置用户

Django 上的外键错误

如何在包含的URL上在Django中使用reverse()?

如何在谷歌地图 URL 中获取多边形并在 gmaps js 中使用它

Django:'ImproperlyConfigured at' 表单 POST 后使用 CreateView

从URL获取值并在SQL查询中使用它

Django的createview与success_url是同一视图?