表myapp_person的名称是自动生成的,如果你要自定义表明,需要在model的Meta类中指定db_table参数,强烈建议使用小写表名,特别是使用MySQL作为后端数据库时。
id字段是自动添加的,如果你想要指定自定义主键,只需要其中一个字段中指定primary_key=True即可。如果Django发现你已经明确地设置了Field.primary_key,它将不会添加自动ID列。
Djang会根据配置文件中指定的数据库后端类型来生成响应的SQL语句。
Django支持MySQL5.5及更高版本。
AutoField
# int自增列,必须填入参数primary_key=True.当model中没有自增列,则自动创建一个列名为id的列。
IntegerField
# 一个整数类型,范围在-2147483648 to 2147483647.(一般不用它来存手机号(位数也不够),直接用字符串存。)
CharField
# 字符类型,必须提供max_length参数,max_length表示字符长度.
from django.db import models
# django中没有对应的char类型字段,但是我们可以自己创建
class FixCharField(models.Field):
"""自定义的char类型字段类"""
def __init__(self, max_length, *args, **kwargs):
self.max_length = max_length
super().__init__(max_length=max_length, *args, **kwargs)
# 让db_type返回的是char字段
def db_type(self, connection):
return f'char({self.max_length})'
# 应用上面自定义的char类型
class Class(models.Model):
class_name = FixCharField(max_length=50,)
DateField
# 日期字段,日期格式:YYYY-MM-DD,相当与Python中的datetime.date()实例.
DateTimeField
# 日期时间字段,格式:YYYY-MM-DD HH:MM[:ss[.uuuuuu]][TZ],相当于Python中的datetime.datetime()实例.
下次再更....
原文:https://www.cnblogs.com/17vv/p/11552685.html