📜  如何使用 Django 字段选择?

📅  最后修改于: 2022-05-13 01:55:03.160000             🧑  作者: Mango

如何使用 Django 字段选择?

Django 字段选择。根据文档,字段选择是一个序列,它由恰好两个项目的可迭代组成(例如[ (A,B),(A,B) ...]),用作某些字段的选择。例如,考虑一个实地学期,它只能有 { 1, 2, 3, 4, 5, 6 } 选项。 Choices 将用户的输入限制为在models.py中指定的特定值。如果给出了选项,它们将由模型验证强制执行,并且默认表单小部件将是一个带有这些选项的选择框,而不是标准文本字段。选择可以是任何序列对象——不一定是列表或元组。

每个元组中的第一个元素是要在模型上设置的实际值,第二个元素是人类可读的名称。
例如,

SEMESTER_CHOICES = (
    ("1", "1"),
    ("2", "2"),
    ("3", "3"),
    ("4", "4"),
    ("5", "5"),
    ("6", "6"),
    ("7", "7"),
    ("8", "8"),
)

让我们在名为 geeksforgeeks 的 django 项目中创建一个包含上述学期的选择字段。

from django.db import models
  
# specifying choices
  
SEMESTER_CHOICES = (
    ("1", "1"),
    ("2", "2"),
    ("3", "3"),
    ("4", "4"),
    ("5", "5"),
    ("6", "6"),
    ("7", "7"),
    ("8", "8"),
)
  
# declaring a Student Model
  
class Student(models.Model):
      semester = models.CharField(
        max_length = 20,
        choices = SEMESTER_CHOICES,
        default = '1'
        )

让我们在管理面板中检查学期是如何创建的。
django 字段选择
还可以将您可用的选择收集到可用于组织目的的命名组中:

MEDIA_CHOICES = [
    ('Audio', (
            ('vinyl', 'Vinyl'),
            ('cd', 'CD'),
        )
    ),
    ('Video', (
            ('vhs', 'VHS Tape'),
            ('dvd', 'DVD'),
        )
    ),
    ('unknown', 'Unknown'),
]

每个元组中的第一个元素是应用于组的名称。第二个元素是 2 元组的可迭代元素,每个 2 元组包含一个值和一个选项的人类可读名称。分组选项可以与单个列表中的未分组选项组合(例如本例中的未知选项)。
对于每个设置了选项的模型字段,Django 将添加一个方法来检索字段当前值的人类可读名称。请参阅数据库 API 文档中的get_FOO_display()