Django Model中字段(field)的各种选项说明
字段与选项
CharField()字符字段
max_length=xxxorNone#必选项
blank=True和default=''#如果不是必填项,可以设置
unique=True#如果想要使其唯一,比如用于username,可以设置
choices=xxx_CHOICES#如果有choice选项,可以设置
TextField()文本字段
max_length=xxx
blank=True和default=''#如果不是必填项,可以设置
DateField()andDateTimeField()日期与时间字段
defaultdate#一般建议设置默认日期
DateField:default=date.today#需要导入包fromdatetimeimportdate
DateTimeField:default=timezone.now#需要导入包fromdjango.utilsimporttimezone
auto_now=True#对于上一次修改日期(last_modifieldate),可以设置
EmailField()邮件字段
unique=True#一般Email用于用户名应该是唯一的,建议设置
IntegerField(),SlugField(),URLField(),BoolField()
blank=True和default=''#如果不是必填项,可以设置
default=TrueorFalse#对于BoolField一般建议设置
FileField()文件字段
upload_to="/somefolder/"#文件指向文件,必填项
max_length=xxx
ImageField(upload_to=None,**options)图片字段
upload_to="/somefolder/"#图片指向文件,必填项
height_field=None
width_field=None
max_length=xxx
ForeighKey(to,on_delete,**options)一对多关系
to#必须指向其他模型
on_delete=models.CASCADEormodels.SET_NULL#on_delete指定删除选项
"default=xxx"or"null=True"
"limit_choices_to="#如果有必要,可以设置
related_name=xxx#便于反向查询
举例:
xxx=models.ForeignKey(xxx, on_delete=models.CASCADE, limit_choices_to={'is_staff':True}, related_name=xxx)
ManyToManyField(to,**options)多对多关系
to#必须只想其他模型
symmetrical=False#如果多对多关系不是对称的,可以设置
through='intermediarymodel#如果需要建立中间模型来搜集更多信息,可以设置
related_name=xxx#便于反向查询
补充知识:django使用annotate定义字段后排序翻页重复的问题
objs=A.objects.annotate(number=Sum('b__number')).order_by('-number')
此时对objs翻页,在number数据相同的地方翻页数据可能会混乱(重复)
解决办法,加上id排序
objs=A.objects.annotate(number=Sum('b__number')).order_by('-number','id')
以上这篇DjangoModel中字段(field)的各种选项说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。