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

在Django CreateView中保存反向外键

在Django中,CreateView是一个通用视图,用于创建对象并将其保存到数据库中。当使用反向外键(Reverse ForeignKey)时,可以通过CreateView来保存相关联的对象。

反向外键是指在模型中定义ForeignKey字段时,使用related_name参数指定反向引用的名称。例如,如果有一个模型A和一个模型B,B模型有一个外键指向A模型,可以在B模型的外键字段上使用related_name参数来定义反向引用的名称,让A模型能够访问与其相关的B模型。

以下是在Django CreateView中保存反向外键的步骤:

  1. 定义模型:
代码语言:txt
复制
from django.db import models

class A(models.Model):
    name = models.CharField(max_length=100)

class B(models.Model):
    a = models.ForeignKey(A, on_delete=models.CASCADE, related_name='b_objects')
    name = models.CharField(max_length=100)
  1. 定义CreateView:
代码语言:txt
复制
from django.views.generic.edit import CreateView
from .models import A, B
from .forms import BForm

class BCreateView(CreateView):
    model = B
    form_class = BForm
    template_name = 'b_create.html'
  1. 创建表单(BForm):
代码语言:txt
复制
from django import forms
from .models import B

class BForm(forms.ModelForm):
    class Meta:
        model = B
        fields = ['a', 'name']
  1. 创建模板文件(b_create.html):
代码语言:txt
复制
<form method="post">
  {% csrf_token %}
  {{ form.as_p }}
  <button type="submit">保存</button>
</form>
  1. 添加URL映射:
代码语言:txt
复制
from django.urls import path
from .views import BCreateView

urlpatterns = [
    path('b/create/', BCreateView.as_view(), name='b_create'),
]

通过以上步骤,可以在Django CreateView中保存反向外键。用户可以访问/b/create/页面,填写表单并提交,相关联的A对象和新创建的B对象将保存到数据库中。

对于该问题,腾讯云提供的云计算相关产品推荐为云服务器(CVM)和云数据库MySQL(CDB)。云服务器提供可弹性扩展的计算资源,适用于部署Django应用程序;云数据库MySQL提供高性能、高可靠性的托管数据库服务,适用于存储和管理应用程序数据。

腾讯云云服务器产品介绍链接:https://cloud.tencent.com/product/cvm

腾讯云云数据库MySQL产品介绍链接:https://cloud.tencent.com/product/cdb

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

相关·内容

django开发取消外约束的实现

# setting设置外 'OPTIONS': { "init_command": "SET foreign_key_checks = 0;", } 补充知识:django-给外关系传值...,删除外关系 反查: 表关系里 related_name = ‘反查name’,自己不设置,django也会默认设置为class的小写名字+_set , ex: book_set....''' 两种方法 教室ClassRoom和教室编号ClassNumber 外字段django类里名(room_number)在数据库名(room_number_id) '''      # 一.1...外字段django类里名(room_number)在数据库名(room_number_id)      c.save() return HttpResponse("ojbk") 多对一: 类似一对一...s.teacher.remove(x) return HttpResponse("ojbk") 以上这篇django实现在开发取消外约束就是小编分享给大家的全部内容了,希望能给大家一个参考。

3.7K10
  • djangoModelForm多表单组合的解决方案

    告诉django模型是谁,fields告诉django需要在表单创建哪些字段。...3、通用视图 django.views.generic.ListView和django.views.generic.edit下的CreateView, UpdateView, DeleteView都是通用视图...这里仅以CreateView为例说明,因为它相对最复杂,接下来的多ModelForm的提交也是CreateView上进行的。...比如CreateView就会由django自动的把页面上POST出的form数据解析到model生成的表单(或者form_calss指定的ModelForm类型表单),同时调用表单的save方法将数据添加到模型对应的数据库表...,先把地址的id赋到外上再保存           project = context['projectForm'].save(commit=False)           project.address

    3.4K20

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

    MonthArchiveView WeekArchiveView DayArchiveView TodayArchiveView DateDetailView 说明 由基于类的视图处理的每个请求都具有一个独立的状态;所以,实例中保存状态变量是安全的...基于类的视图URL 模式的部署使用as_view() 类方法: urlpatterns = [ url(r'^view/$', MyView.as_view(size=42)), ] 视图参数的线程安全性...参数必须对应于已经存在的属性(hasattr 检查可以返回True)。 基础视图 VS. 通用视图 基于类的基础视图可以认为是父视图,它们可以直接使用或者继承它们。...Django 的通用视图建立基础视图之上,用于作为经常用到的功能的快捷方式,例如显示对象的详细信息。它们提炼视图开发中常见的风格和模式并将它们抽象,这样你可以快速编写常见的视图而不用重复你自己。...大部分通常视图需要queryset ,它是一个查询集 实例;关于查询集对象的更多信息,请参见执行查询。 译者:Django 文档协作翻译小组,原文:API reference。

    85320

    django admin配置搜索域是一个外时的处理方法

    python 2.7.11 django 1.8.4 错误内容:related Field has invalid lookup: icontains 我原来默认认为处理外搜索的时候,django...,双下划线 list_display = ('book', 'category') # 页面上显示的字段,若不设置则显示 models.py __unicode__(self) 中所返回的值...Django admin 系统的搜索时可能会出现“related Field has invalid lookup: icontains”错误,主要原因是外查询是需要指定相应的字段的。...Django定义了如下A,B两个模型: class A: name=models.CharField(max_length=15) def __unicode__(self):...admin配置搜索域是一个外时的处理方法就是小编分享给大家的全部内容了,希望能给大家一个参考。

    3.8K20

    Django | 开发】面试招聘信息网站(用户登录注册&投在线递简历)

    (不建议), 相关配置 方法二:allauth 集成(建议) ✨【Django | allauth】登录_注册_邮箱验证_密码邮箱重置✨ ✨【Django | allauth】useprofile...用户模型扩展✨ ✨【Django | allauth】重写allauth重置密码方法✨ 二、创建建立模型 jobs应用添加如下模型 class Resume(models.Model):...'个人能力', {'fields': ('candidate_introduction', 'work_experience', 'project_experience'),} )) # 保存简历外...解决: 类视图写上 初始化方法get_initial # 类视图 class ResumeCreateView(LoginRequiredMixin, CreateView): """ 简历视图 "...self.object = form.save(commit=False) # 添加表单中所没有的数据 self.object.applicant = self.request.user # 保存

    89410

    基于django的视频点播网站开发-step6-个人中心功能

    个人资料 这里主要是对个人资料进行编辑,先显示用户原有的信息,然后用户即可对其进行修改并保存,对于编辑功能,django有自己的解决方案,即通过通用视图类UpdateView对模型进行更改。...需要我们做的就是users/urls.py添加个人资料的路由, path('profile//', views.ProfileView.as_view(), name='profile...当更新成功后,django会回调get_success_url来将结果告诉模板,因此我们可以get_success_url里面做一些定制的工作,我们可以传一些自己的参数。...当拿到form之后,通过验证form合法性,然后调用user.save()来保存修改。...我们直接贴出FeedbackView的代码 class FeedbackView(LoginRequiredMixin, generic.CreateView): model = Feedback

    1.2K00

    Django数据库操作之save与update的使用

    例如数据更新操作,对单条记录,可以使用save或者是update两种方式 Django工程下的settings.py下将log设置为DEBUG,即可查看save和update分别执行了哪些SQL语句...u”, u”, u”, u”, u”, u’2015-02-02 1 7:43:53′, 481) 首先要查询k这条记录,然后save()的时候提交更新的内容,发现更新的时候把Example的有字段都...使用Django的数据模型操作数据库时,了解这些底层的SQL操作很有必要。...所以我们先通过 article = form.save(commit=False)创建article实例,此时让Django先不要发送数据到数据库,等待我们把author添加好后,再把数据一起存储到数据库...from django.views.generic.edit import CreateView from .models import Article from django.forms import

    2.9K10

    django select_related和prefetch_related的用法与区别

    当我们模板调用{{ article.category.name }} 和 {{ tag.name }}显示category和tags的名字时,Django还需要重新查询blog_category和blog_tag...select_related方法 select_related将会根据外关系(注意: 仅限单对单和单对多关系),执行查询语句的时候通过创建一条包含SQL inner join操作的SELECT语句来一次性获得主对象及相关对象的信息...现在我们对article_list视图函数稍微进行修改,加入select_related方法,查询文章列表时同时一次性获取相关联的category对象信息,这样模板调用 {{ article.category.name...Django提供了prefect_related方法来解决这个问题。prefect_related可用于多对多关系字段,也可用于反向外关系(related_name)。...对与单对单或单对多外ForeignKey字段,使用select_related方法 对于多对多字段和反向外关系,使用prefetch_related方法 两种方法均支持双下划线指定需要查询的关联对象的字段名

    1.3K20
    领券