django使用日志01--model创建

7 篇文章 0 订阅
5 篇文章 0 订阅
一.model的创建,以及外键的使用

foreignkey表示一对多的关系。
一般来说,foreignkey放在多的一方。

例子1(自关联):

class Organizations(models.Model):
    name = models.CharField()
    pid = models.ForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, verbose_name='father',
                            related_name='sub_org')

foreignkey在django中必须要有两个参数:1.关联的表名 2.on_delete

在设置外键时,需要通过on_delete选项指明主表删除数据时,对于外键引用表数据如何处理,在django.db.models中包含了可选常量:

CASCADE 级联,删除主表数据时连通一起删除外键表中数据

PROTECT 保护,通过抛出ProtectedError异常,来阻止删除主表中被外键应用的数据

SET_NULL 设置为NULL,仅在该字段null=True允许为null时可用

SET_DEFAULT 设置为默认值,仅在该字段设置了默认值时可用

DO_NOTHING 不做任何操作,如果数据库前置指明级联性,此选项会抛出IntegrityError异常

SET() 设置为特定值或者调用特定方法,如
from django.conf import settings
from django.contrib.auth import get_user_model
from django.db import models

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),
    )
其他的参数

null 如果为True,表示允许为空,默认值是False

blank 如果为True,则该字段允许为空白,默认值是False

db_column 字段的名称,如果未指定,则使用属性的名称

db_index 若值为True, 则在表中会为此字段创建索引,默认值是False

default 默认

primary_key 若为True,则该字段会成为模型的主键字段,默认值是False,一般作为AutoField的选项使用

unique 如果为True, 这个字段在表中必须有唯一值,默认值是False

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值