Django中如何直接给外键字段传入整数值,无需传递关联模型实例?
Django外键直接传入关联整数值的解决方法
Django外键字段默认需要接收关联模型的实例,即使配置了to_field参数也无法直接传入原始关联值,要实现直接传整数值赋值,可按以下方式修改:
1 优化视图重复创建订单的问题
原代码中重复调用了两次form.save(),会生成两条完全一致的Order记录,先修正这部分:
# 替换原有的两行save代码 # form.save() # theSameForm = form.save() new_order = form.save()
2 修改OrderedBook实例创建逻辑
创建实例时使用Django自动为外键生成的_id后缀字段,即可直接传入订单号整数值:
newOrderedBook = OrderedBook.objects.create( orderNumber_id = new_order.pk, # 外键字段加_id后缀即可直接传整数值 user = request.user, book = book, )
原理解释
Django对所有外键字段都会自动生成一个[外键名称]_id的隐式属性,该属性直接对应数据库中存储的关联字段值,无论外键通过to_field指定关联到目标模型的哪个字段,都可以通过该属性直接读写原始值,无需提前查询出关联模型的实例。
内容的提问来源于stack exchange,提问作者Стопчак Олег
相关产品推荐
相关产品推荐

