实战Django之Model操作之一对一外键(OneToOneField\ForeignKey)正反调用

版权声明:本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。本文为博主原创文章,转载请附上博文链接! https://blog.csdn.net/Burgess_zheng/article/details/86592519

目录


 OneToOneField方式

    建立表类

跳转:实战之Django之Model建表流程 https://blog.csdn.net/Burgess_zheng/article/details/86564984

路径:project/modes_handle/models.py

from django.db import models

class A(models.Model):
    name = models.CharField(max_length=34)

class B(models.Model):
    name = models.CharField(max_length=34)
    a_key = models.OneToOneField("A", related_name='n', on_delete=models.CASCADE)
 

进入项目目录下执行以下面命令(创建表 or 重新生成表结构)
python manage.py makemigrations
python manage.py migrate

    根据类表进行django的shell命令行操作外键正反调用

进入项目目录(执行如下命令进行django提供的shell命令行)

F:\Burgess\Python\pycharm实验脚本\test\project_burgess>python manage.py shell

>>> from modes_handle import models
>>> A_obj = models.A.objects.create(name='小红')
>>> B_obj = models.B.objects.create(name='小强',a_key_id=1)
>>> A_obj.name
'小红'
>>> B_obj.name
'小强'
>>> B_obj.a_key.name
'小红'
>>> A_obj.n.name
'小强'

插入:如果创建数据库表B表没有related_name该参数反向调取:(”B表名小写”)
A_obj.b.name  #得到结果:小强

Foreginkey+Unique=True方式

  建立表类

路径:project/modes_handle/models.py

from django.db import models

class A(models.Model):
    name = models.CharField(max_length=34)
class B(models.Model):
    name = models.CharField(max_length=34)
    a_key = models.ForeignKey("A",unique=True,related_name='n',on_delete=models.CASCADE)

进入项目目录下执行以下面命令(创建表 or 重新生成表结构)
python manage.py makemigrations
python manage.py migrate

    根据类表进行django的shell命令行操作外键正反调用

进入项目目录(执行如下命令进行django提供的shell命令行)

F:\Burgess\Python\pycharm实验脚本\test\project_burgess>python manage.py shell

>>> from modes_handle import models
>>> A_obj = models.A.objects.create(name='小红')
>>> B_obj = models.B.objects.create(name='小强',a_key_id=1)
>>> A_obj.name
'小红'
>>> B_obj.name
'小强'
>>> B_obj.a_key.name
'小红'
>>> A_obj.n.all()[0].name
'小强'

插入:如果创建数据库表B表没有related_name该参数反向调取:(”B表名小写” + “_set”)
A_obj.b_set.all()[0].name #得到结果:小强

主篇:Django之Model操作之一对一外键正反调用【ORM篇四】https://blog.csdn.net/Burgess_zheng/article/details/86591085

猜你喜欢

转载自blog.csdn.net/Burgess_zheng/article/details/86592519