Django model 中设置联合约束和联合索引

来自:https://blog.csdn.net/ding_312/article/details/81264910

class Cart(models.Model):
    user = models.ForeignKey(
        MyUser,
        verbose_name="用户"
    )
    goods = models.ForeignKey(
        Goods,
        verbose_name="商品"
    )
    num = models.IntegerField(
        verbose_name="商品数量"
    )
    is_select = models.BooleanField(
        default=True,
        verbose_name="选中状态"
    )

    class Meta:
        # 联合约束   其中goods和user不能重复
        unique_together = ["goods", "user"]
        # 联合索引, 其中"goods"和"user"联合同步查询,提高效率
        index_together = ["user", "goods"]

原文地址:https://www.cnblogs.com/shengulong/p/10320900.html

时间: 2024-08-29 18:20:53

Django model 中设置联合约束和联合索引的相关文章

Django model中设置多个字段联合唯一约束

1,直接通过 models.ManyToManyField from django.db import models class UserInfo(models.Model): username = models.CharField(max_length=32) password = models.CharField(max_length=64) class NewsType(models.Model): caption = models.CharField(max_length=16) cla

Django model 中meta options之 abstract

当abstract=True时,这个model就变成了abstrct base class,那这个基类有什么特性呢? 当某一model中设置了abstract=True时,就会使该model中的字段都不会产生对应的表,而是可以作为基类加入到其他model中 那有什么用呢? 有时多个model有些相同的字段,这样很浪费时间,而且重复本身也不利于代码简洁.好该abstract来了 看官例: from django.db import models class CommonInfo(models.Mo

UUIDField在Django Model中的使用经验

今天下午在将数据库从旧库导入到新库时,完成后发现Django网站无法打开,报"ValueError, badly formed hexadecimal UUID string",最终定位到原因是一个UUIDField类型字段的值为0,造成Django无法将0验证为UUID类型,从而引发ValueError异常.现总结UUIDField在Django Model中的使用经验如下. 在Django中UUIDField类型的字段可以作为主键(主键是绝对不可能为NULL值的)使用,这个是丝毫没

model中设置默认值时 ,使用 lambda 与否的差别以及datetime的默认值方法

'date': '2013-01-01'  #固定值 'date': time.strftime('%Y-%m-%d')  #启动时候的值 'date': lambda *a: time.strftime('%Y-%m-%d')  #当前日期   6.1后,官方建议date/datetime的默认值的写法是(能解决时区问题): 'birthdate': fields.date.context_today, 'create_at': fields.datetime.now, model中设置默认值

Django model 中的字段解释

Django 通过 models 实现数据库的创建.修改.删除等操作,本文为模型中一般常用的类型的清单,便于查询和使用: AutoField:一个自动递增的整型字段,添加记录时它会自动增长.你通常不需要直接使用这个字段:如果你不指定主键的话,系统会自动添加一个主键字段到你的model.(参阅自动主键字段) BooleanField:布尔字段,管理工具里会自动将其描述为checkbox. CharField:字符串字段,单行输入,用于较短的字符串,如要保存大量文本, 使用 TextField,Ch

获取django model 中得fields

UserProfile._meta.fields [<django.db.models.fields.related.OneToOneField: user>,  <django.db.models.fields.CharField: username>, <django.db.models.fields.CharField: nickname>, <django.db.models.fields.EmailField: email>, <django

Django 项目中设置缓存

一.配置文件settings.py中 # 设置django缓存存放位置为redis数据库,并设置一个默认(default)选项,在redis中(配置文件/etc/redis/redis.conf)开启了RDB持久化储存 # pip install django-redis, 然后在视图中可以通过 from django_redis import get_redis_connection 这个方法和redis数据库进行连接 CACHES = { "default": { "BA

django model中的save()方法

Model.save(force_insert=False, force_update=False, using=DEFAULT_DB_ALIAS, update_fields=None) id和pk 如果一个model里没有显示声明哪一个字段(field)是主键(即在某个字段里声明primary_key=True),则django会自动生成一个名为id的AutoFields作为主键.model里的主键都有一个别名叫做pk(primary_key的缩写),无论这个主键是自动生成的还是我们指定的.

Django 【第二十六】Django model中的 class Meta 详解

class Foo(models.Model): bar = models.CharField(maxlength=30) class Meta: # ... Model 元数据就是 "不是一个字段的任何数据" -- 比如排序选项, admin 选项等等. 下面是所有可能用到的 Meta 选项. 没有一个选项是必需的. 是否添加 class Meta 到你的 model 完全是可选的. app_label app_label这个选项只在一种情况下使用,就是你的模型类不在默认的应用程序包