Django Model Meta Options: 定义模型元数据选项

2023-04-06 00:00:00 模型 定义 选项

Django中的Model Meta Options是用于定义模型元数据的选项,它允许开发者定义一些特定的属性和行为,用于控制模型的创建、修改和查询等方面。

以下是一些常用的Model Meta Options选项:

  1. ordering:定义查询数据时的排序方式。可以使用字段名(包括外键字段)或者降序排序使用“-”前缀。例如:
class User(models.Model):
    name = models.CharField(max_length=50)
    age = models.IntegerField()

    class Meta:
        ordering = ['-age']  # 按照年龄的降序排序
  1. verbose_name和verbose_name_plural:定义模型的人类可读名称和复数名称。例如:
class Article(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField()

    class Meta:
        verbose_name = '文章'
        verbose_name_plural = '文章列表'
  1. constraints:用于定义模型的约束条件。例如:
class Person(models.Model):
    name = models.CharField(max_length=20)
    age = models.IntegerField()
    gender = models.CharField(max_length=10)

    class Meta:
        constraints = [
            models.CheckConstraint(check=models.Q(gender__in=['男', '女']), name='gender check'),
            models.UniqueConstraint(fields=['name', 'age'], name='unique name-age'),
        ]
  1. indexes:用于定义模型的索引条件。例如:
class Comment(models.Model):
    article = models.ForeignKey(Article, on_delete=models.CASCADE)
    content = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)

    class Meta:
        indexes = [
            models.Index(fields=['article']),
            models.Index(fields=['created_at'], name='comment_created_at_idx'),
        ]
  1. db_table:用于定义表名称。如果不指定此选项,则使用Django默认的命名规则。
class Blog(models.Model):
    name = models.CharField(max_length=50)

    class Meta:
        db_table = 'my_blog_table'

更多Model Meta Options的选项,请查看Django官方文档。

相关文章