在数据库存下的本质上都是字符串,但是在models.py里面有多种格式:
from django.db import models # Create your models here. class UserInfo(models.Model): username = models.CharField(max_length=32) password = models.CharField(max_length=64) email = models.CharField(max_length=32) text = models.EmailField(max_length=19, null=True) text1 = models.URLField(max_length=19, null=True) text2 = models.GenericIPAddressField(max_length=19, null=True)
这些本质上都一样,不过在admin里面起到作用。
字段的参数:
1.null:创建数据库的时候是否为空
2.default:默认值
3.primary_key:是否为主键
4.db_column:修改列名
5.db_index:普通索引
6.unique:是否为唯一索引
7.unique_for_date:只对时间索引
8.unique_for_month:只对月份索引
9.unique_for_year:只对年索引
10.auto_now:创建时,自动生成当前时间
11.auto_now_add:更新时,自动更新为当前时间
ctime = models.DateField(auto_now_add=True, null=True) uptime = models.DateField(auto_now=True, null=True)
12.chioces:做一个选项,把选项放在内存里面,在admin里面产生下拉框
user_type_choices = ( (1, '超级会员'), (2, '普通会员'), (3, '普通成员'), ) user_type_id = models.IntegerField(choices=user_type_choices, default=1)
这里在数据库里面显示的是数字,但是在admin里面就会变成对应的选项,创建好提交到数据库之后,还是数字。
13.blank:在admin中是否可以为空
14.verbose_name:在admin中改成相应的中文名
15.editable:在admin中是否可以被编辑(即是否显示它)
16.help_text:在admin中提示信息的设置
17.validators:自定义错误信息
两个表之间也可以存在关系:
class UserGroup(models.Model): uid = models.AutoField(primary_key=True) #设置了一个自增主键 class UserInfo(models.Model): user_group = models.ForeignKey('UserGroup', to_field='uid', default=1, on_delete=models.CASCADE) #表中是user_group_id存取数字,只能是uid的一个
创建的时候用xxx_id之间创建,免去查询数据库过程
userlist = models.xxx.object.all() for row in userlist: row.id row.xxx_id row.xxx.name