Django - 模型的选择

Dav*_*idL 2 django choice django-models multiple-choice

我一直在搜索和浏览文档,但我想在这里询问并确认最佳解决方案.

试图定义模型选择.

  1. '是,不,不确定'选择来自Radio Select
  2. 我如何定义多项选择

简单示例:在我的models.py中,我有

class Property(models.Model):
    name = models.CharField()

class Feature(models.Model):
    YES_CHOICES = (       # example of 1, there can be only one selection
        ('YES', 'Yes'),
        ('NO', 'No'),
        ('NOT_SURE', 'Not Sure')
    )
    PARKING_CHOICES = (    # example of 2, there can be multiple selections
        ('GARAGE', 'Garage'),
        ('STREET', 'Street'),
        ('PRIVATE_LOT', 'Private Lot'),
        ('VALET', 'Valet'),
    )

    nearby_school = models.CharField(max_length=8, choices=YES_CHOICES)
    parking_options = models. MultipleChoiceField(choices=PARKING_CHOICES)

class PropertyFeature(models.Model)
    property = models.ForeignKey(Property)
    feature = models.ForeignKey(Feature)
    ...
Run Code Online (Sandbox Code Playgroud)

那些最好的方法吗?

  1. 我应该使用NullBooleanField代替是,否,不确定问题?
  2. 这是定义和存储多项选择答案的正确方法吗?有时候,我看到人们使用了很多很多物体.

只想使用Django提供的最有效和最简单的方法.

sup*_*cuo 5

18个月左右之后,现在有更好的方式来处理choicesDjango; ŁukaszLanga'sdj.choices.它的一个使用示例,来自介绍该项目博客文章:

from dj.choices import Choices, Choice

class Gender(Choices):
    male = Choice("male")
    female = Choice("female")
    not_specified = Choice("not specified")

class User(models.Model):
    gender = models.IntegerField(choices=Gender(),
            default=Gender.not_specified.id)

    def greet(self):
        gender = Gender.from_id(self.gender)
        if gender == Gender.male:
            return 'Hi, boy.'
        elif gender == Gender.female:
            return 'Hello, girl.'
        else:
            return 'Hey there, user!'
Run Code Online (Sandbox Code Playgroud)

但是,这仍然不适用于多个选择.