Django之ORM常用字段和参数有哪些
Django内置ORM是一种用于Python开发的Object Relational Mapping(对象关系映射)库,用于操作数据库。ORM提供了一种面向对象的方式来访问和操作数据库,而不需要直接使用数据库语言。在Django ORM中,字段是用来描述模型中属性的对象。本文将介绍Django ORM中常用的字段和参数。
一、CharField
CharField是Django ORM中最基本和常用的字段,它用于存储字符串类型的数据。在创建CharField时,您需要指定一个最大长度:
class MyModel(models.Model):
name = models.CharField(max_length=100)
这样会创建一个名为“name”的CharField,其最大长度为100个字符。
CharField的参数:
- max_length:字段的最大长度。
二、IntegerField
IntegerField用于存储整数类型的数据:
class MyModel(models.Model):
age = models.IntegerField()
IntegerField的参数:
- default:默认值。
- null:是否允许为空。
- blank:是否允许为空格字符串。
- validators:用于验证字段的函数列表。
三、BooleanField
BooleanField用于存储布尔类型的数据:
class MyModel(models.Model):
is_active = models.BooleanField(default=False)
BooleanField的参数:
- default:默认值。
- null:是否允许为空。
四、DateField
DateField用于存储日期类型的数据:
class MyModel(models.Model):
birthdate = models.DateField()
DateField的参数:
- auto_now:当保存对象时,设置字段的值为当前日期。
- auto_now_add:当对象 次被创建时,设置字段的值为当前日期。
- default:默认日期。
- null:是否允许为空。
五、DateTimeField
DateTimeField用于存储日期和时间类型的数据:
class MyModel(models.Model):
created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True)
DateTimeField的参数:
- auto_now:当保存对象时,设置字段的值为当前日期和时间。
- auto_now_add:当对象 次被创建时,设置字段的值为当前日期和时间。
- default:默认日期时间。
- null:是否允许为空。
六、DecimalField
DecimalField用于存储十进制数字类型的数据:
class MyModel(models.Model):
price = models.DecimalField(max_digits=4, decimal_places=2)
DecimalField的参数:
- max_digits:数字的最大位数(包括小数点)。
- decimal_places:小数点后的位数。
- default:默认值。
- null:是否允许为空。
七、FloatField
FloatField用于存储浮点类型的数据:
class MyModel(models.Model):
weight = models.FloatField()
FloatField的参数:
- default:默认值。
- null:是否允许为空。
八、ForeignKey
ForeignKey用于与其他模型之间创建关联:
class Author(models.Model):
name = models.CharField(max_length=100)
class Book(models.Model):
title = models.CharField(max_length=200)
author = models.ForeignKey(Author, on_delete=models.CASCADE)
在这个例子中,我们通过Book模型中的ForeignKey与Author模型建立关联。在创建ForeignKey时,我们需要指定模型的类名和相关的参数。
ForeignKey的参数:
- to:关联的模型。
- on_delete:当关联的对象删除时,ForeignKey字典的行为。
九、ManyToManyField
ManyToManyField用于创建多对多的关联:
class Tag(models.Model):
name = models.CharField(max_length=50)
class Article(models.Model):
title = models.CharField(max_length=200)
tags = models.ManyToManyField(Tag)
在这个例子中,我们可以看到通过ManyToManyField建立了Article和Tag之间的多对多关联。
ManyToManyField的参数:
- to:关联的模型。
- through:用于指定自定义的中间模型。
- symmetrical:是否是对称的关系。
十、OneToOneField
OneToOneField用于建立一对一的关联:
class Person(models.Model):
name = models.CharField(max_length=100)
class Passport(models.Model):
number = models.CharField(max_length=20)
person = models.OneToOneField(Person, on_delete=models.CASCADE)
在这个例子中,我们通过OneToOneField创建了一个人和他/她的护照之间的一对一关系。
OneToOneField的参数:
- to:关联的模型。
- on_delete:当关联的对象删除时,OneToOneField字段的行为。
总结
本文介绍了Django ORM中常用的字段和参数,涵盖了字符串、整数、布尔、日期、日期时间、十进制数字、浮点数、外键、多对多和一对一10种类型。其中,每种类型都有其独特的参数,可以根据需求定制模型。对于Django开发人员来说,了解ORM字段和参数的使用非常重要,可以帮助他们更好地操作数据库。
