model-----unique_together

django 模型 unique together 示例

class UserInfo(model.Model):
  name = model.CharField(max.lenth=32)
  age = model.IntegerField()
  class Meta:
    unique_together = ('name','age)
unique_together
  一起使用的字段名称集必须是唯一的:

 unique_together = (("driver", "restaurant"),)
  这是元组的元组,在一起考虑时必须是唯一的。它在Django管理员中使用,并在数据库级别强制执行(即,UNIQUE语句中包含相应的 语句)。CREATE TABLE

  为方便起见,在处理单个字段集时,unique_together可以是单个元组:

  unique_together = ("driver", "restaurant")

  

  A ManyToManyField不能包含在unique_together中。(目前尚不清楚这甚至意味着什么!)如果您需要验证与a相关的唯一性ManyToManyField,请尝试使用信号或显式through模型。

  在ValidationError当约束被违反了模型验证过程中提出的unique_together错误代码。

  官方文档部分介绍

一般作用于:

  设置字段唯一,但是有事一种组合形式的,并且不重复。

  保存用户为唯一和课程,但是一个用户有多个课程,所以采用这种方式保存。

 

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

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

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

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

  比如:

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

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

  unique_together = ('name', 'birth_day', 'address')
  联合唯一无法作用于普通的多对多字段。

  unique_together = (('username', 'password',),( 'age','date'),) # 联合唯一,当任一元组参数中所有字段都相同时无法添加。

本文作者:春游去动物园

本文链接:https://www.cnblogs.com/chunyouqudongwuyuan/p/16564207.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   春游去动物园  阅读(133)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
展开
  1. 1 生分 川青
生分 - 川青
00:00 / 00:00
An audio error has occurred.

生分 - 川青

词:莎子

曲:邵翼天

编曲:林亦

混音:罗杨轩

吉他:林亦

制作人:谢宇伦

监制:曾炜超/陈显

策划:+7

统筹:黄染染

出品:漫吞吞文化

『酷狗音乐人 • 星曜计划』

全方位推广,见证星力量!

「版权所有未经许可 不得商业翻唱或使用」

我们怎么变得那么生分

用了几年也没解开疑问

有些事你不提我也不问

在陌生与熟悉间找平衡

有些话一开口会伤人

有些话一开口会伤人

所以我选择默不作声

所以我选择默不作声

爱一个人

若甘愿陪衬

甘愿牺牲

也许换个名分

也不是没可能

我不怕在爱里做个蠢人

我不怕在爱里做个蠢人

也不怕爱过之后再分

也不怕爱过之后再分

爱一个人

有万种身份

万种可能

只是没想到

我们最后友人相称

我们怎么变得那么生分

我们怎么变得那么生分

连说话都要掌握好分寸

怕不注意流言

见缝插针

怕不小心我们

成陌生人

我们怎么变得那么生分

用了几年也没解开疑问

有些事你不提我也不问

在陌生与熟悉间找平衡

有些话一开口会伤人

有些话一开口会伤人

所以我选择默不作声

所以我选择默不作声

爱一个人

若甘愿陪衬

甘愿牺牲

也许换个名分

也不是没可能

我不怕在爱里做个蠢人

我不怕在爱里做个蠢人

也不怕爱过之后再分

也不怕爱过之后再分

爱一个人

有万种身份

万种可能

只是没想到我们最后

友人相称

我们怎么变得那么生分

连说话都要掌握好分寸

怕不注意流言见缝插针

怕不小心我们成陌生人

我们怎么变得那么生分

用了几年也没解开疑问

有些事你不提我也不问

在陌生与熟悉间找平衡

我们怎么变得那么生分

我们怎么变得那么生分

连说话都要掌握好分寸

怕不注意流言见缝插针

怕不小心我们成陌生人

我们怎么变得那么生分

用了几年也没解开疑问

有些事你不提我也不问

在陌生与熟悉间找平衡