Django项目Teacher模型配置:允许同名同年龄不同service的教师
解决Django Teacher模型支持姓名年龄相同但service不同的问题
你的现有模型已经满足需求,直接就能存储姓名、年龄相同但service字段不同的教师数据,原因如下:
Django会自动给每个模型添加一个自增的主键字段id,这条字段是每条记录的唯一标识。哪怕name和age完全一致,只要是不同的记录(不管service是否相同),数据库都会通过id来区分并存储。
验证步骤(通过Django Shell)
打开项目终端,输入以下命令进入Shell:
python manage.py shell
然后执行创建记录的代码:
from your_app_name.models import Teacher # 创建两条姓名、年龄相同,但service不同的记录 Teacher.objects.create(name='Arnaud', age=29, service='Science') Teacher.objects.create(name='Arnaud', age=29, service='Geologie')
查询验证:
# 会返回两条符合条件的记录 Teacher.objects.filter(name='Arnaud', age=29)
需要避免的错误操作
不要给模型添加以下约束,否则会禁止存储姓名、年龄相同的记录:
- 不要设置
unique_together = (('name', 'age'),) - 不要给
name或age字段单独加unique=True参数 - 不要用
UniqueConstraint限制name和age的组合唯一性
内容的提问来源于stack exchange,提问作者Pathia Nanto
相关产品推荐
相关产品推荐

