ORM字段参数
Posted caesar-id
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORM字段参数相关的知识,希望对你有一定的参考价值。
null:如果null=True,则该字段在数据库中的值可以为NULL,默认null=False。
blank:如果blank=True,前端form表单可以空,注意,这与NULL不同。NULL纯粹与数据库相关,而空值则与验证相关。如果字段为blank=True,则表单验证将允许输入空值。如果字段为blank=False,则该字段必须填写。
db_column:用于此字段的数据库列的名称。如果没有给出,Django将使用字段的名称。
db_index:如果db_index=True,则允许创建该字段为索引。
default:为字段设置默认值。
primary_key:primary_key=True将该字段设为主键。
unique:unique=True设置该字段值在表中是唯一的,不能重复。
unique_for_date:将该字段日期(DateField、DateTimeField)设置为唯一不能重复。
unique_for_year:将该字段年份(DateField、DateTimeField)设置为唯一不能重复。
unique_for_moth:将该字段月份(DateField、DateTimeField)设置为唯一不能重复。
choices:显示选择框的内容,如:sex = models.IntegerField(choices=[(0, ‘女‘),(1, ‘男‘),],default=1),如果我们使用"对象.sex"的方式将只能获取0或者是1,而不能获取男或者女。可以使用“对象.get_sex_display”的方式来获取选项中的男或女。如下示例:
from django.db import models class Person(models.Model): SHIRT_SIZES = ( # 定义choices的选项 (‘S‘, ‘Small‘), (‘M‘, ‘Medium‘), (‘L‘, ‘Large‘), ) name = models.CharField(max_length=60) shirt_size = models.CharField(max_length=1,choices=SHIRT_SIZES) >>>from 项目_app.models import Person # 在终端中导入模块 >>> p = Person(name="Fred Flintstone", shirt_size="L") >>> p.save() >>> p.shirt_size # 直接打印字段 ‘L‘ >>> p.get_shirt_size_display() # 使用对象.get_字段_display()的方式打印字段 ‘Large‘
error_messages:自定义错误信息(字典类型),从而定制想要显示的错误信息;字典健:null, blank, invalid, invalid_choice, unique, and unique_for_date
如:{‘null‘: "不能为空.", ‘invalid‘: ‘格式错误‘}
参考网址:https://docs.djangoproject.com/en/1.11/ref/models/fields/#field-options
ForeignKey(ForeignObject)
参数:ForeignObject(RelatedField)
to=表名, # 要进行关联的表名
to_field=None, # 要关联的表中的字段名称
on_delete=None, # 当删除关联表中的数据时,当前表与其关联的行的行为
- models.CASCADE,删除关联数据,与之关联也删除
- models.DO_NOTHING,删除关联数据,引发错误IntegrityError
- models.PROTECT,删除关联数据,引发错误ProtectedError
- models.SET_NULL,删除关联数据,与之关联的值设置为null(前提FK字段需要设置为可空)
- models.SET_DEFAULT,删除关联数据,与之关联的值设置为默认值(前提FK字段需要设置默认值)
- models.SET,删除关联数据,
a. 与之关联的值设置为指定值,设置:models.SET(值)
b. 与之关联的值设置为可执行对象的返回值,设置:models.SET(可执行对象)
def get_sentinel_user(): return get_user_model().objects.get_or_create(username=‘deleted‘)[0] class MyModel(models.Model): user = models.ForeignKey( settings.AUTH_USER_MODEL, on_delete=models.SET(get_sentinel_user), # 调用函数get_sentinel_user() )
------------------------------------未完
以上是关于ORM字段参数的主要内容,如果未能解决你的问题,请参考以下文章