Django模型设计

  1. 访问外键值:

book_set 就是一个 QuerySet 对象,可以过滤和切片。例如:


p = Publisher.objects.get(name='Apress Publishing') p.book_set.filter(title__icontains='django')

[<Book: The Django Book>, <Book: Pro Django>]

book_set 属性是生成的:把模型名的小写形式与 _set 连在一起。

2.访问多对多值:

3.管理器:在 Book.objects.all() 语句中, objects 是个特殊的属性,我们通过它查询数据库。

  • 简单来说,模型的管理器是 Django 模型用于执行数据库查询的对象。一个 Django 模型至少有一个管理器,而且可以自定义管理器,定制访问数据库的方式。自定义管理器可能出于两方面的原因:添加额外的管理器方法和(或)修改管理器返回的 QuerySet 。

字段类型

1.models.AutoField

2.models.BigIntegerField

3.models.BinaryField

4.models.BooleanField

5.models.CharField

6.models.CommaSeparatedIntegerField

7.models.DateField

8.models.DateTimeField

9.models.DecimalField

10.models.DurationField

11.models.EmailField

12.models.FileField

13.models.FilePathField

14.models.FloatField

15.models.ImageField

16.models.IntegerField

17.models.IPAddressField

18.models.GenericIPAddressField

19.models.NullBooleanField

20.models.PositiveIntegerField

21.models.PositiveSmallIntegerField

22.models.SlugField

23.models.SmallIntegerField

24.models.TextField

25.models.TimeField

26.models.URLField

27.models.UUIDField

关系字段:

1.models.ForeignKey

2.models.ManyToManyField

3.models.OneToOneField

字段选项

1.null

2.blank

3.choices

4.db_column

5.db_index

6.db_tablespace

7.default

8.editable

9.error_messages

10.help_text

11.primary_key

12.unique

13.unique_for_date

14.unique_for_month

15.unique_for_year

16.verbose_name

17.validators

字段的自述名

  • 除 ForeignKey 、 ManyToManyField 和 OneToOneField 之外,每个字段类型都接受一个可选的位置参数 —— 字段的自述名。如果没有给定自述名,Django 将根据字段的属性名称自动创建自述名 —— 将属性名称的下划线替换成空格。

  • ForeignKey 、 ManyToManyField 和 OneToOneField 都要求第一个参数是一个模型类,所以要使用 verbose_name 关键字参数才能指定自述名:

关系

多对一

ForeignKey 需要一个位置参数:与该模型关联的类。

多对多

ManyToManyField 需要一个位置参数:和该模型关联的类。

through与中介模型(待补充)

一对一

OneToOneField 要一个位置参数:与模型关联的类。

元选项

class Meta 定义模型的元数据,模型元数据是“任何不是字段的数据”,在模型中添加 class Meta 是完全可选的,所有选项都不是必须的。

1.abstract

2.app_label

3.db_table

4.db_tablespace

5.default_related_name

6.get_latest_by

7.managed

8.order_with_respect_to

9.ordering

10.permissions

11.default_permissions

12.proxy

13.select_on_save

14.unique_together

15.index_together

16.verbose_name

Options.verbose_name

对象的一个易于理解的名称,为单数:

verbose_name = "pizza"

如果此项没有设置,Django会把类名拆分开来作为自述名,比如CamelCase 会变成camel case

17.verbose_name_plural

Options.verbose_name_plural

该对象复数形式的名称:

verbose_name_plural = "stories"

如果此项没有设置,Django 会使用 verbose_name + "s"。

上一篇:CRM【第一篇】: 权限组件之权限控制


下一篇:在window系统上安装redis服务-Invalid argument during startup: Failed to open the .conf