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

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

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

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

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

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

    for x in s:
        print(x)
    return HttpResponse('')
AI 代码解读

方法2:

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

    p = Person.objects.first()
    p.article_set.add(a, bulk=False)
    return HttpResponse('')
AI 代码解读
  • 使用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
    
    AI 代码解读
  • 如果是上面的那种需求,建议使用bulk=False的解决方案。
目录
打赏
0
1
1
0
342
分享
相关文章
Oracle数据库批量删除表、视图、序列、存储过程、函数脚本
Oracle数据库批量删除表、视图、序列、存储过程、函数脚本
155 0
MySQL数据库——视图的更新、视图作用以及案例
MySQL数据库——视图的更新、视图作用以及案例
408 0
视图的创建
如何创建和使用视图的功能,更好的方便我们的工作。
126 0
零代码实现一对一表关系和无限主子表级联保存
本文主要介绍一对一关系和无限主子表在crudapi系统中的应用。一对一关系是指关系数据库中两个表之间的一种关系。关系数据库中第一个表中的单个行只可以与第二个表中的一个行相关,且第二个表中的一个行也只可以与第一个表中的一个行相关。
329 0
零代码实现一对一表关系和无限主子表级联保存
不设外键:用程序来实现表之间的关联
Association 相信有很多同学都有使用过Hibernate框架的开发经验,尽管现在开发人员对Hibernate的褒贬不一,我们暂且不谈这个话题。
1773 1
EFCore中如何移除主外键关系
目录 EFCore中如何移除主外键关系 场景介绍 主外键关系的问题 解决思路 禁止级联关系的生成 MicroFX.EntityFrameworkCore.RemoveForeignKey扩展 EFCore中如何移除主外键关系 场景介绍 我用EFCore写了一个blog程序,我要通过写文章来分享自己的知识,我定义了一个Article用来存放文章信息,我还定义了一个Category用来存放文章的分类,Category与Article是一对的关系。
3759 0

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等