视图函数中创建模型, 并设置外键

简介: 视图函数中创建模型, 并设置外键。

视图函数中创建模型, 并设置外键
方法1: 给Article对象指定author,就可以使用以下代码来完成:
def index(request):
p = Person(name='小花')

    # 将p先保存到数据库中
    p.save()
    a = Article(title='日记1', content='二狗打小报告, 真讨厌' )
    a.author = p
    a.save()
    return HttpResponse('')

并且以后如果想要获取某个用户下所有的文章,可以通过article_set来实现。示例代码如下:

def index(request):
    # 获取person表中的第一个用户
    p = Person.objects.first()
    # 获取该用户的所有文章
    s = p.article_set.all()

    for x in s:
        print(x)
    return HttpResponse('')

方法2:

def index(request):
    a = Article(title='日记3', content='哇,三胖瘦了更好看!')

    p = Person.objects.first()
    p.article_set.add(a, bulk=False)
    return HttpResponse('')
  • 使用bulk=False,那么Django会自动的保存article,而不需要在添加到p之前先保存article。
  • 或者是另外一种解决方式是,在添加到category.article_set中之前,先将article保存到数据库中。但是如果article.category不能为空,那么就产生一种死循环了,article没有category不能保存,而将article添加到cateogry.artile_set中,又需要article之前是已经存储到数据库中的。
    如下:
    # ----- 此代码不成立 -----
    def index(request):
        a = Article(title='日记3', content='哇,三胖瘦了更好看!')
        a.save()
        p = Person.objects.first()
        p.article_set.add(a)
        return HttpResponse('')
    # django.db.utils.IntegrityError: NOT NULL constraint failed: firsta_article.author_id
    
  • 如果是上面的那种需求,建议使用bulk=False的解决方案。
相关文章
|
12月前
|
存储 JavaScript 前端开发
什么是循环引用现象呢
【10月更文挑战第13天】什么是循环引用现象呢
283 0
|
11月前
|
存储 Java Nacos
Spring Cloud+Nacos+KMS 动态配置最佳实践
本文讲述了 Spring Cloud 应用中结合 Nacos 实现了运行期配置动态更新的功能,以及在此基础上结合 KMS 在不改动代码的情况下对应用使用的敏感配置进行保护,解决将配置迁移到 Nacos 中可能存在的数据安全顾虑,并对其底层工作原理做了简单介绍。
1313 159
ThreeJs给物体添加贴图
这篇文章详细说明了在Three.js中如何给3D物体添加贴图,并展示了实现局部贴图的技术和方法。
544 1
ThreeJs给物体添加贴图
|
11月前
|
API
使用京东API接口进行支付结算有哪些注意事项?
使用京东API接口进行支付结算时,需遵守京东开放平台规定,保护用户隐私,关注API接口变化,确保应用合法、完整、可靠,正确使用API对接信息,保持API接口调用成功率,及时整改程序缺陷,结算依据以商家后台系统为准。如需帮助,请私信或评论联系。
|
小程序 JavaScript
Taro@3.x+Vue@3.x+TS开发微信小程序,使用轮播图
本文介绍了使用 Taro 和 Vue 创建轮播组件的两种方法:一是通过 `<swiper>` 实现,二是利用 Nut UI 的 `<nut-swiper>` 组件实现。
422 2
Taro@3.x+Vue@3.x+TS开发微信小程序,使用轮播图
|
监控 算法 安全
基于颜色模型和边缘检测的火焰识别FPGA实现,包含testbench和matlab验证程序
本项目展示了基于FPGA的火焰识别算法,可在多种应用场景中实时检测火焰。通过颜色模型与边缘检测技术,结合HSV和YCbCr颜色空间,高效提取火焰特征。使用Vivado 2019.2和Matlab 2022a实现算法,并提供仿真结果与测试样本。FPGA平台充分发挥并行处理优势,实现低延迟高吞吐量的火焰检测。项目包含完整代码及操作视频说明。
|
存储 安全 物联网
|
Oracle 关系型数据库 数据挖掘
|
开发框架 .NET 数据库连接
ASP.NET Core 标识(Identity)框架系列(一):如何使用 ASP.NET Core 标识(Identity)框架创建用户和角色?
ASP.NET Core 标识(Identity)框架系列(一):如何使用 ASP.NET Core 标识(Identity)框架创建用户和角色?
242 0