欢迎访问宙启技术站
智能推送

Django之ORM常用字段和参数有哪些

发布时间:2023-05-15 13:54:26

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字段和参数的使用非常重要,可以帮助他们更好地操作数据库。