django模型中, 外键字段使用to_filed属性 指定到所关联主表的某个字段

在django项目的开发过程中,在设计模型时一开始将主键设置成了一个自定义的字段,但是在创建搜索索引时却发现必须要存在一个id的字段,并且为主键(不知道是否是项目一开始就这样配置的原因), 但此时表结构已经整体固定下来,并且有外键关联到了这个自定义的的主键,整个后台视图逻辑也已经封装完成,如果主表的主键发生改变,那么外键所在的表就会默认关联到新的主键上,那个后台视图的改动就会非常麻烦,这时就需要使用外键字段中的to_field属性来指定所关联的主表的某个字段,而不会影响到原先的逻辑

demo如下:

from uuid import uuid4from django.db import models
class CourseInfo(models.Model):

    # 使用Bigint
    id = models.BigAutoField(primary_key=True)
   # 使用to_field关联到了这个字段,所以必须设置unique=True
    course_id = models.UUIDField(auto_created=True, default=uuid4, editable=False, unique=True, db_index=True)

class Learner(models.Model):

    id = models.AutoField(primary_key=True)
    course = models.ForeignKey(CourseInfo, to_field="course_id")

原文地址:https://www.cnblogs.com/lowmanisbusy/p/9217592.html

时间: 2024-10-23 22:30:27

django模型中, 外键字段使用to_filed属性 指定到所关联主表的某个字段的相关文章

Django 模型中FileField字段

FileField¶ class FileField([upload_to=None, max_length=100, **options])¶ 一个上传文件的字段. 注意 FileField字段不支持primary_key 和unique参数,如果使用会生成 TypeError错误 有两个可选参数: FileField.upload_to¶ Changed in Django 1.7: 在旧版本Django中,upload_to 属性是必须要有的; 这将会添加一个本地文件系统路径到 MEDIA

Django ORM - 001 - 外键表查询主表信息

开始用Django做web开发,我想大家都会遇到同样的问题,那就是如何高效快速的查询需要的数据,MVC都很简单,但是ORM折腾起来就有些费时间,我准备好好研究下Django ORM,所以会有一个系列的Blog,欢迎大家讨论拍砖. 1. 如何快速的通过外键表获取主表的信息 演示Class from django.db import models import uuid class Employee(models.Model): employee_id = models.UUIDField(prim

thinkphp 模型有外键时的添加和查询

1.模型要继承RelationModel,定义关联关系 class MessageModel extends RelationModel{ protected $_link = array( 'user' =>array( 'mapping_type'  => self::BELONGS_TO, 'class_name'    => 'User', 'foreign_key'   => 'user_id', 'mapping_name'  => 'user', ), ); }

django ORM的外键操作

外键约束示例 #models操作如下 class HostInfo(models.Model): servername = models.CharField(max_length=32) serverip = models.CharField(max_length=32) serverpassword = models.CharField(max_length=64) server_group = models.ForeignKey("GroupInfo",to_field="

Django 模型中DateField字段

DateField¶ class DateField([auto_now=False, auto_now_add=False, **options])¶ 这是一个使用Python的datetime.date实例表示的日期. 有几个额外的设置参数: DateField.auto_now¶ 每次保存对象时,自动设置该字段为当前时间.用于"最后一次修改"的时间戳. 注意,它总是使用当前日期; 它不是一个您可以重写的默认值. DateField.auto_now_add¶ 当对象第一次被创建时

django模型中的__str__()方法和__unicode__()方法

在Django中,如果用的是Python3的话就只能用__str__方法,如果是Python2的话就使用__unicode__方法.因为更安全一些. 作用:没加之前在admin后台看到的是一个对象,加了以后看到的是一个字段的值.如下两个图的区别: 原文地址:https://www.cnblogs.com/pythonchen/p/10116390.html

Django模型中的OneToOneField和ForeignKey有什么区别?

说是ForeignKey是one-to-many的,并举了一个车的例子: 有两个配件表,一个是车轮表,另一个是引擎表.两个表都有一个car字段,表示该配件对应的车. 对于车轮来说,多个对应一个car的情况很正常,所以car字段应该用ForeignKey来表示. 对于引擎来说,一个引擎只可能对应一个car,所以必须用OneToOneField. OneToOneField(someModel) 可以理解为 ForeignKey(SomeModel, unique=True). 两者的反向查询是有差

Django 模型中的CRUD

一.通过 ORM 向 DB 中增加数据 1.Entry.objects.create(属性=值,属性=值) Entry:具体要操作的Model类 ex: Author.objects.create(name='zsf',age=85) 2.创建一个 Models 对象,通过对象的 save() 完成增加 author = Author(names='laoshe',age=65)author.save() 3.使用字典构建属性,通过 save() 完成增加 dic = { '属性1':'值1',

Django中ORM外键和表的关系(Django编程-4)

外键 在MySQL中,表有两种引擎,一种是InnoDB,另外一种是myisam.如果使用的是InnoDB引擎,是支持外键约束的.外键的存在使得ORM框架在处理表关系的时候异常的强大.因此这里我们首先来介绍下外键在Django中的使用. 类定义为class ForeignKey(to,on_delete,**options).第一个参数是引用的是哪个模型,第二个参数是在使用外键引用的模型数据被删除了,这个字段该如何处理,比如有CASCADE.SET_NULL等.这里以一个实际案例来说明.比如有一个