对django 模型 unique together的示例讲解

yipeiwu_com7年前Python基础

unique_together

这个元数据是非常重要的一个!它等同于数据库的联合约束!

举个例子,假设有一张用户表,保存有用户的姓名、出生日期、性别和籍贯等等信息。要求是所有的用户唯一不重复,可现在有好几个叫“张伟”的,如何区别它们呢?(不要和我说主键唯一,这里讨论的不是这个问题)

我们可以设置不能有两个用户在同一个地方同一时刻出生并且都叫“张伟”,使用这种联合约束,保证数据库能不能重复添加用户(也不要和我谈小概率问题)。在Django的模型中,如何实现这种约束呢?

使用unique_together,也就是联合唯一!

比如:

unique_together = (('name', 'birth_day', 'address'),)

这样,哪怕有两个在同一天出生的张伟,但他们的籍贯不同,也就是两个不同的用户。一旦三者都相同,则会被Django拒绝创建。这一元数据经常被用在admin后台,并且强制应用于数据库层面。

unique_together接收一个二维的元组((xx,xx,xx,...),(),(),()...),每一个元素都是一个元组,表示一组联合唯一约束,可以同时设置多组约束。为了方便,对于只有一组约束的情况下,可以简单地使用一维元素,例如:

unique_together = ('name', 'birth_day', 'address')

联合唯一无法作用于普通的多对多字段。

以上这篇对django 模型 unique together的示例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

python docx 中文字体设置的操作方法

最近用到了docx生成word文档,docx本身用起来很方便,自带的各种样式都很好看,美中不足的就是对中文的支持不够好。在未设置中文字体的时候,生成的文档虽然可以显示中文,但是笔画大小不...

基于Python实现大文件分割和命名脚本过程解析

日志文件分割、命名 工作中经常会收到测试同学、客户同学提供的日志文件,其中不乏几百M一G的也都有,毕竟压测一晚上产生的日志量还是很可观的,xDxD,因此不可避免的需要对日志进行分割,通...

Python元字符的用法实例解析

反斜杠的作用: 要想将一个元字符^当一个普通字符处理,加反斜杠 例如: >>>import re >>>r=r'\^abc' >&g...

Python FTP两个文件夹间的同步实例代码

具体代码如下所示: # -*- coding: utf-8 -*- ''''''' ftp自动检测源文件夹的更新,将源文件夹更新的内容拷贝到目标文件夹中 使用树的层序遍...

Python实现微信机器人的方法

Python实现微信机器人的方法

最近在学python的过程中无意间发现一个python库:wxpy,其可以实现让微信自动接收、处理消息并进行回复的一系列功能。感觉挺有意思的,便自行摸索学习,并成功地实现了其功能。 当我...