【Django】model模型—字段关联关系:多对一,一对一

多对一

例子:如果一个 Car 模型有一个制造者 Manufacturer --就是说一个 Manufacturer 制造许多辆车,但是每辆车都仅有一个制造者-- 那么使用下面的方法定义这个关系:

python 复制代码
from django.db import models

# 制造商
class Manufacturer(models.Model):
    # ...
    pass

# 汽车
class Car(models.Model):
	# ForeignKey字段,Manufacturer为关联的模型
    manufacturer = models.ForeignKey(Manufacturer, on_delete=models.CASCADE)
    # ...

ForeignKey字段名最好是关联的模型名,需要添加一个位置参数,即关联的模型类名。

一对一

例子:一个餐厅的模型,和一个位置信息模型,一个餐厅对应一个地点。

python 复制代码
from django.db import models

# 位置信息
class Place(models.Model):
    # ...
    pass

# 餐厅
class Restaurant(models.Model):
	# OneToOneField字段,Manufacturer为关联的模型
    place = models.OneToOneField(Place, on_delete=models.CASCADE)
    # ...

处理这样的情况时最好使用模型继承 ,它隐含的包括了一个一对一关系。

ForeignKey和OneToOneField可以创建自关联关系,也可以创建与尚未定义的模型的关系(模型名称用引号括起来)

相关推荐
小小张说故事1 小时前
Python 的 obj.x 到底按什么顺序找?拆开数据描述符、实例字典和 __getattr__ 那条优先级链
python
用户11481867894842 小时前
水印的实现方式逻辑
前端·python
贾公子2 小时前
从单条内容到账号维度——AIGC 风险评分的工程实现
后端·python
木头左4 小时前
【Python】不点浏览器发博客:逆向 CSDN 创作中心接口做 md-publish 技能
python·自动化·api
Tt有了t4 小时前
设计模式速查
java·python·设计模式
deepseek234 小时前
Python日志拖慢请求?QueueHandler排队、丢失与退出实测
python·性能优化·logging·后端开发·queuehandler
用户91294046848425 小时前
Codex 从零到能交付(05):第一次改代码:生成一个文件清单脚本
python
Dmz丶5 小时前
前端转 AI 100 天 Day 38:Token 管理与成本优化——别让 API 账单爆炸
python
用户298698530145 小时前
Python 自动化处理 Word 页眉页脚的几种典型场景
后端·python·api
終不似少年遊*6 小时前
【安全业务Agent】从场景到编排
python·react.js·ai·langchain·agent·安全架构·工作流