首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用CreateView django将对象添加到特定的外键

,可以通过以下步骤实现:

  1. 首先,在你的Django项目中创建一个继承自CreateView的视图类。这个类将负责处理对象的创建和保存。
  2. 在视图类中,指定模型表单类(ModelForm)和模型类(Model),以及成功后要重定向的URL。
  3. 在URL配置中,将这个视图类与一个URL路径进行关联。
  4. 在模板中,使用表单标签和字段来创建一个表单,以便用户输入相关信息。
  5. 在视图类中,通过重写form_valid()方法来处理表单的验证和保存逻辑。在这个方法中,你可以获取到用户输入的数据,并将其保存到数据库中。
  6. 如果你想将对象添加到特定的外键,你可以在form_valid()方法中获取到外键对象,并将其关联到新创建的对象上。

下面是一个示例代码:

代码语言:txt
复制
from django.views.generic.edit import CreateView
from django.urls import reverse_lazy
from .models import ParentModel, ChildModel
from .forms import ChildModelForm

class ChildCreateView(CreateView):
    model = ChildModel
    form_class = ChildModelForm
    template_name = 'child_create.html'
    success_url = reverse_lazy('parent_detail')

    def form_valid(self, form):
        parent_id = self.kwargs['parent_id']
        parent = ParentModel.objects.get(id=parent_id)
        child = form.save(commit=False)
        child.parent = parent
        child.save()
        return super().form_valid(form)

在上面的代码中,ChildCreateView是一个继承自CreateView的视图类。它使用ChildModel作为模型类,ChildModelForm作为模型表单类。成功保存后,将重定向到名为'parent_detail'的URL。

在form_valid()方法中,我们获取到了通过URL传递的parent_id,并使用它来获取到对应的ParentModel对象。然后,我们将这个对象赋值给新创建的ChildModel对象的外键字段parent,并保存到数据库中。

这样,当用户提交表单时,对象将被添加到特定的外键中。

请注意,上述示例中的模型和表单类是示意性的,你需要根据自己的项目需求进行相应的调整。

推荐的腾讯云相关产品:腾讯云云服务器(CVM),腾讯云数据库MySQL版(TencentDB for MySQL),腾讯云对象存储(COS),腾讯云容器服务(TKE)。

更多腾讯云产品介绍和详细信息,请访问腾讯云官方网站:https://cloud.tencent.com/

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

django序列化时使用真实值操作

展示: 一般情况下序列化得到内容只是id: ... { fields: { uat_date: "2015-07-25", statu: "CG", name: "慢赢优化",...方法: 我序列化是Content表,它含有一个关联是Module表,1对多 我要先序列化Module表,然后序列化Content表时候才可以使用到Module真实值 class ModuleManager...jsons = serializers.serialize(‘json’, queryset,use_natural_foreign_keys=True) 附: 如果要给Content表序列化,那么要使用到外...actual_key,要保证先序列化,如下依赖: class Content(models.Model): name = models.CharField(max_length=100) ......,这种方法并不常用 在有特定需要时候,使用这种django原生序列化,还是十分方便

1.8K10

django中ModelForm多表单组合解决方案

3、通用视图 django.views.generic.ListView和django.views.generic.edit下CreateView, UpdateView, DeleteView都是通用视图...比如CreateView就会由django自动把页面上POST出form数据解析到model生成表单(或者form_calss指定ModelForm类型表单),同时调用表单save方法数据添加到模型对应数据库表中...可以看到,除去定义model或者form类,几行代码就可以搞定这么多事。我们看看CreateView继承关系: 简单介绍下CreateView通用视图中每个父类作用。...,此时是不能save,因为project和address对应数据库记录还没有创建,所以commit传为False           contract = form.save(commit=False...#按照四条数据库记录顺序依次创建(调用save方法)、主键赋到下一条记录中、下一次记录创建(save)           projectAddress = context['projectAddressForm

3.4K20
  • Django——ContentType(与多个表建立关系)及ContentType-signals使用

    可以看到,我们通过model_class就可以获取对应类。也就是说,今后,我们如果自己定义model如果有关联到這个ContentType上,我们就能找到对应model名称。...对于新鲜事这个功能来说就是使用GenericRelation来产生一个特殊,它不像models.ForeignKey那样,必须指定一个Model来作为它指向对象。...怎么从这张操作记录表中得到相应操作model呢,这就得用到fields.GenericForeignKey,它是一个特殊,可以指向任何Model实例,在这里就可以通过这个字段来指向类似Post...是再给上面的表增加一个,然后重新修改数据库么?显然是不能,一旦数据库被创建了,我们几乎很少再去修改数据,如果再给其添加额外字段,无疑会带来不必要麻烦。...总之,如果一个表与其他表有多个关系,我们可以通过ContentType来解决这种关联。

    4.4K20

    django 1.8 官方文档翻译: 3-4-3 使用基于类视图处理表单

    这些通用视图将自动创建一个ModelForm,只要它们能知道使用哪一个模型类: 如果给出model属性,则使用该模型类。 如果get_object() 返回一个对象,则使用对象类。...你甚至不需要为CreateView 和UpdateView提供success_url —— 如果存在它们将使用模型对象get_absolute_url()。...模型和request.user 为了跟踪使用CreateView 创建一个对象用户,你可以使用一个自定义ModelForm 来实现这点。...首先,向模型添加关联: #models.py from django.contrib.auth.models import User from django.db import models class...在这个视图中,请确保你没有created_by 包含进要编辑字段列表,并覆盖form_valid() 来添加这个用户: #views.py from django.views.generic.edit

    1.8K20

    ARKit 简介-使用设备相机虚拟对象添加到现实世界中 看视频

    在本课程中,您将了解到ARKit,您将学习如何制作自己游乐场。您将能够模型甚至您自己设计添加到应用程序中并与它们一起玩。您还将学习如何应用照明并根据自己喜好进行调整。...增强现实 增强现实定义了通过设备摄像头虚拟元素(无论是2D还是3D)集成到现实世界环境中用户体验。它允许用户与自己周围环境交互数字对象或角色,以创建独特体验。 什么是ARKit?...无论是动物部位添加到脸上还是与另一个人交换面部,你都会忍不住嘲笑它。然后你拍一张照片或短视频并分享给你朋友。...而且,光估计可以被集成以点亮模拟物理世界中光源虚拟对象。...在产品名称字段下一个窗口中,让我们项目命名为DesignCodeARKit。作为团队,我选择了我开发团队。如果没有,请使用个人团队。但是,您一次最多只能运行3个项目。

    3.7K30

    django 1.8 官方文档翻译: 3-4-5 内建基于类视图API

    这表示不应该使用列表、字典或其它可变对象作为视图参数。如果你真这么做而且对共享对象做过修改,某个用户行为可能对后面访问同一个视图用户产生影响。...传递给as_view() 参数赋值给服务请求实例。利用前面的例子,这表示对MyView每个请求都可以使用 self.size。...它们不能满足项目中所有的需求,在这种情况下有Mixin 可以扩展基础视图功能。 Django 通用视图建立在基础视图之上,用于作为经常用到功能快捷方式,例如显示对象详细信息。...大部分通常视图需要queryset ,它是一个查询集 实例;关于查询集对象更多信息,请参见执行查询。 译者:Django 文档协作翻译小组,原文:API reference。...Django 文档协作翻译小组人手紧缺,有兴趣朋友可以加入我们,完全公益性质。

    85320

    python-Django-URL 路由(二)

    Django URL路由示例 下面是一个简单Django应用程序示例,它使用URL路由来处理客户端请求。...如果请求方法是POST,视图函数获取用户提交文章标题和内容,并创建一个新Post对象,然后将用户重定向到新创建文章详细页面。...视图函数获取文章slug,并使用get_object_or_404函数从数据库中获取文章对象。然后,视图函数文章对象传递给包含文章详细信息HTML模板。...如果请求方法是POST,视图函数获取用户提交文章标题和内容,并更新现有的Post对象,然后将用户重定向到更新后文章详细页面。...这个视图函数使用Django通用视图类CreateView来处理创建新文章表单,然后重定向到post_list视图函数,这个视图函数渲染一个包含所有文章列表HTML模板。

    82120

    Django内置通用类视图CBV及示例

    django自带view如下表所示: 类名 功能 例子 View 基本View, 可以在任何时候使用 见后面详细介绍 RedirectView 重新定向到其他URL 访问"/log-in/"用户重新定向到..."/login/" TemplateView 显示Django HTML template 一般网站中使用模板显示页 ListView 显示对象列表 文章列表页 DetailView 显示对象详情 文章详细页...表示对象列表一个页面. 执行这个视图时候,self.object_list包含视图正在操作对象列表(通常是一个查询集,但不是必须)....属性: model: 指定模型 tempalta_name:模板文件 queryset:指定一个经过过滤对象列表,取代model提供值 context_object_name: 指定要在上下文中使用变量名称...执行这个视图时候,self.object包含视图正在操作对象.

    3.2K10

    Django源码学习-8-ListView&DetailView通用视图

    Django网络应用开发5项基础核心技术包括模型(Model)设计,URL 设计与配置,View(视图)编写,Template(模板)设计和Form(表单)使用。...Django通用视图可以减少开发单调性,它抽象出一些在视图开发中常用代码和模式,这样就可以在无需编写大量代码情况下,快速编写出常用视图函数。 ?...import DetailView from django.views.generic.edit import ( CreateView, DeleteView, FormView, UpdateView...② DetailView:显示一个对象某个属性详细信息 用于显示某一 Model 中一个 object 详细信息。...(self): # get_object() 默认时返回通过 pk 或 slug 筛选出对象(该视图需要操作对象) # Call the superclass

    1.4K10

    Django&DRF重点内容大盘点

    Django&DRF重点内容大盘点 本文只是学习过程中需要深刻记忆,在工作中常用一些命令或者知识点进行一个罗列并阐释,不会全面的所有内容进行讲解。...Django框架提供method_decorator针对函数视图装饰器添加到类视图方法上面 # 为全部请求方法添加装饰器 @method_decorator(my_decorator, name='..., verbose_name='图书') # cascade是级联,删除主表数据时连同表中数据一起删除 1.12.3迁移生成表 1)生成迁移文件 python manage.py makemigrations...多对象.属性 例:hero.hbook 2....=[about_django]) 注意:此处 about_django为我们自定义校验函数 2)在序列化器类中定义特定方法 validate_针对特定字段进行补充验证 def

    5.9K20

    diango之基于内置视图CBS编程

    使用django自身cbvs cbvs是可扩展,但在也增加了复杂度,有时甚至出现8个import引入关系。...django自带view如下表所示: 类名 功能 例子 View 基本View, 可以在任何时候使用 见后面详细介绍 RedirectView 重新定向到其他URL 访问"/log-in/"用户重新定向到..."/login/" TemplateView 显示Django HTML template 一般网站中使用模板显示页 ListView 显示对象列表 文章列表页 DetailView 显示对象详情 文章详细页...FormView 提交From 网站联系我们或emai订阅form CreateView 创建对象 创建新文章页 UpdateView 更新对象 修改文章页 DeleteView 删除对象 删除文章页...在Django中, 我们可以使用mixin为CBVs提供更多扩展性, 当然在类继承过程中, 我们推荐以下原则: Django自身提供View永远在最右边 mixin依次在以上view左边 mixin

    71230

    Django-Multitenant,分布式多租户数据库项目实战(PythonDjango+Postgres+Citus)

    目录 项目源码 安装 支持 Django 版本/前提条件。 用法 模型变化 使用 mixins 更改模型 在 db 层自动化复合: 在哪里设置租户?...通过租户上下文添加到查询来实现轻松横向扩展,使数据库(例如 Citus)能够有效地查询路由到正确数据库节点。...Ex: tenant_id='store_id' TenantModel 子类所有都应使用 TenantForeignKey 代替 models.ForeignKey 实现上述 2 个步骤示例模型...: 在 db 层自动化复合使用 TenantForeignKey 在租户相关模型之间创建将自动 tenant_id 添加到引用查询(例如 product.purchases)和连接查询(例如...只需在身份验证时设置它,库确保其余部分( tenant_id 过滤器添加到查询中)。上面的示例实现如下: 在您设置中,您需要更新 MIDDLEWARE 设置以包含您创建设置。

    1.9K10

    django restframework serializer 增加自定义字段操作

    使用django restframework serializer 序列化在django中定义model时,有时候我们需要额外在serializer中增加一些model中没有的字段。...假设现在有一个Animal模型,其中有name, type, country字段,country为。我们在序列化Animal时,需要额外增加countryarea信息。...方法一修改数据库,利用model 这里就不多解释,主要来说第二种,不修改djangomodel,直接使用SerializerMethodField(method_name=None)字段。...它通过调用它所连接序列化类方法来获得它值。它可用于任何类型数据添加到对象序列化表示中。...field_name') validated_data = validated_data instance = Model.objects.create(**validated_data) # ...操作

    3.6K40
    领券