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

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

视图函数中创建模型, 并设置外键
方法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的解决方案。
相关文章
|
存储 SQL Oracle
Oracle数据库批量删除表、视图、序列、存储过程、函数脚本
Oracle数据库批量删除表、视图、序列、存储过程、函数脚本
150 0
|
7月前
|
安全 关系型数据库 MySQL
MySQL数据库——视图的更新、视图作用以及案例
MySQL数据库——视图的更新、视图作用以及案例
369 0
|
8月前
|
安全 容器
switfUI 组合视图
switfUI 组合视图
87 1
|
数据库
因祸得福——创建视图时改变字段的类型
因祸得福——创建视图时改变字段的类型
148 0
|
数据可视化 开发者
使用VFL创建约束对象
使用VFL创建约束对象
119 0
|
存储 SQL Java
Mysql数据库表字段设计优化(状态列)
初始状态码(java int 32 long 64),int 可以表示31种(除去0000),long可以表示63种(除去0000),当然不可能将0000赋值给初始状态,一般来讲,选择int还是long是根据具体业务需求来决定的。
674 0
Mysql数据库表字段设计优化(状态列)
|
SQL 数据处理
视图的创建
如何创建和使用视图的功能,更好的方便我们的工作。
121 0
|
SQL 存储 数据库
SQL 基础(二)数据表的创建、约束、修改、查看、删除
SQL 基础(二)数据表的创建、约束、修改、查看、删除
277 0
SQL 基础(二)数据表的创建、约束、修改、查看、删除
|
索引
啥,又要为表增加一列属性?
今天分享2个列扩展性设计上几个小技巧,只占大伙1分钟(下班太晚的话,只能写一分钟系列=_=)
489 0