- 访问外键值:
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"。