django model field类型

默认:required = True,unique = True, primary_key = False(自增id除外), editable = True, default= xxx

AutoField:Int自增类型,一般为主键id自增,一般不使用这种字段类型
BigIntegerField:64位的int类型,对应form的widget:TextInput
BinaryField:二进制类型
BooleanField:true/false类型
CharField:字符串类型(小至大都可以),大的字符串对应form的widget: TextField,默认是TextInput,必须设置max_length参数 如description = models.CharField(max_length=100)
CommaSeparatedIntegerField
int类型,并以逗号分割,需要设置max_length
DateField:日期类型 对应的form widget是TextInput。
auto_now表示当前日期。如: edited = models.DateField(auto_now=True)每次对象被更新时,把该字段的值修改为当前时间
, 或者是created = models.DateField(auto_now_add=True)对象被创建时,把该字段的值设置为当前时间
二者只能用其一
DateTimeField:日期时间类型。对应的form widget是TextInput
与DateTime类似,增加了一个时间。参数与DateTime相同
DecimalField:带小数点的数值。对应的form widget是NumberInput [localize](https://docs.djangoproject.com/en/1.8/topics/i18n/formatting/#format-localization)是False)或者TextInput(其他)
需要设置max_digits:小数的位数
decimal_places:整个数值有几位
DurationField(没用过)
EmailField:默认使用EmailValidator验证输入
默认的max_length是254(django1.8中)
FileField:不能使用primary_key和unique=True
upload_to='your/path/'这个路径是你setting.py中设置的/MEDI_ROOT/your/path/
注意当我们要使用文件,图片等上传时,html中的form需要设置为enctype="multipart/form-data",否则会出错
当我们需要保存一个file时,使用storage.默认的form widget为ClearableFileInput. 
使用FileField或者ImageField:
1. 我们需要设置MEDIA_ROOT和MEDIA_URL,
比如你的MEDIA_ROOT = '/home/media'
upload_to = 'photos/%Y/%m/%d'
那么你的文件就保存在/home/media/photos/2015/09/09
2. 当设置了MEDIA_URL后,比如你在models中定义了models.ImageField(upload_to = 'mug_shot')
3. 在template中就可以通过
{{object.mug_shot.url}}来获取该图片了
FieldFile:当访问model的FileField字段时,你就会获取到FieldFile的一个实例
FieldFile.url
FieldFile.open(mode='rb')
FieldFile.close()
FieldFile.save(name,content,save=True)
FieldFile.delete(save = True)
FilePathField:待更新
FloatField:浮点数。对应的form widget是NumberInput(localize = False)或者TextInput(others)
关于decimalfloat:
浮点数无法被精确表示,在需要精确浮点数的场合使用decimal。比如商品的价格我们一般用DecimalField
ImageField:从FileField继承,但是验证上传的对象是否为有效图片,同时还有heightwidth属性
需要PIL(Pillow)库支持
ImageField(upload_to='my/path',height_field=50, width_field=50)
默认的form widget是ClearableFileInput
IntegerField:从-2147483648到2147483647的所有整数。默认的form widget是NumberInput(当localize=False)或者TextInput(其他情况)
GenericIPAddressField(待更新)
NullBooleanField
PositiveIntegerField:正整数
PositiveSmallIntegerField:0~32767的整数
SlugField:一般用在URLs中,值包含字母,数字,下划线和连字符。默认max_length为50
SmallIntegerField:-32768~32767的整数
TextField:用于大量text默认form widget是Textarea
TimeField:默认form widget是TextInput
URLField: 默认form widge是TextInput 默认max_length=200
UUIDField

Relationship Fields

ForeignKey:外键1对多
user = models.ForeignKey('model_name')
如果外键是另外一个app中的model
manufacturer = models.ForeignKey('app_name.model_name')
1. limit_choice_to:
staff_member = models.ForeignKey(User, limit_choices_to={'is_staff':True})
只把is_staff字段为True的User作为外键
可用complex queries返回一个Q object,然后
limit_choices_to = Q
2. related_name
user = models.ForeignKey(User, related_name = '+')
当设置为+时,只能通过本model调用User表,而不能从User调用本model?
class Tag(models.Model):
    article = models.ForeignKey(Article, related_name="tags", related_query_name="tag")
article字段调用的是Article这个表的tags字段?
3. to_field 默认调用外表的主键(默认id)
ManyToManyField:多对多
OneToOneField:1对1

更详细请访问:django文档

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值