Django中models.py字段选项null和blank的区别和使用。

1.null

如果null=True,数据库中空值储存为NULL,默认为False。

2.blank

如果blank=True,则允许字段为。默认为False。

需要注意的是,这不同于null,null纯粹是与数据库相关的。而blank是与表单验证相关,如果一个字段有blank=True,表单验证将允许输入一个空值,反之blank=False,该字段将必须是有值的。

3.当一个CharField字段都有unique=Trueblank=True设置。在这种情况下,null=True需要避免在使用空值保存多个对象时出现唯一的约束违规。

Django项目中,可以通过 `models.py` 文件编写ORM(对象关系映射)代码来定义数据库模型。以下是根据您提供的文档内容,在 `models.py` 文件中创建对应 Model 类的示例: ### 1. 图书表 (Books) ```python from django.db import models class Book(models.Model): id = models.AutoField(primary_key=True) # 主键自增长 title = models.CharField(max_length=100, null=False) # 书名 publisher = models.CharField(max_length=100, blank=True, null=True) # 出版社 author = models.CharField(max_length=100, blank=True, null=True) # 作者 price = models.DecimalField(max_digits=10, decimal_places=2, blank=True, null=True) # 价格 def __str__(self): return self.title ``` ### 2. 用户表 (Users) ```python class User(models.Model): GENDER_CHOICES = [ ('M', 'Male'), ('F', 'Female') ] ROLE_CHOICES = [ ('用户', 'User'), ('管理员', 'Admin') ] id = models.AutoField(primary_key=True) # 主键自增长 name = models.CharField(max_length=50, null=False) # 姓名 gender = models.CharField(max_length=1, choices=GENDER_CHOICES, default='M') # 性别 phone = models.CharField(max_length=20, blank=True, null=True) # 电话 role = models.CharField(max_length=20, choices=ROLE_CHOICES, default='用户') # 角色 limit = models.IntegerField(default=3) # 借阅上限 status = models.BooleanField(default=True) # 活跃状态 def __str__(self): return self.name ``` ### 3. 借阅表 (Loans) ```python class Loan(models.Model): book = models.ForeignKey(Book, on_delete=models.CASCADE) # 图书外键 user = models.ForeignKey(User, on_delete=models.CASCADE) # 用户外键 end_date = models.DateField(null=True, blank=True) # 结束日期 return_date = models.DateField(null=True, blank=True) # 还书日期 def __str__(self): return f"{self.user.name} - {self.book.title}" ``` ### 解释 - **Book** 类定义了图书表的字段,包括主键 `id`、书名 `title`、出版社 `publisher`、作者 `author` 价格 `price`。 - **User** 类定义了用户表的字段,包括主键 `id`、姓名 `name`、性别 `gender`、电话 `phone`、角色 `role`、借阅上限 `limit` 活跃状态 `status`。其中,性别角色使用了选择项。 - **Loan** 类定义了借阅表的字段,包括图书外键 `book`、用户外键 `user`、结束日期 `end_date` 还书日期 `return_date`。 这些模型类将自动映射到 SQL Server 数据库中的相应表。在 Django 项目中,可以通过 `python manage.py makemigrations` `python manage.py migrate` 命令来生成并应用迁移文件,从而创建数据库表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值