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字段参数的主要内容,如果未能解决你的问题,请参考以下文章

Django中ORM介绍和字段及字段参数

Django种ORM介绍和字段及字段参数

Django中ORM常用字段及字段参数

Django中ORM介绍和字段及字段参数

Django中ORM介绍和字段及字段参数

ORM常用字段和参数