Python 如何在django模型中实现选择字段?

Python 如何在django模型中实现选择字段?,python,django,Python,Django,我想在django开发一个鸽子应用程序,我的鸽子模型有状态字段。 为此,我必须定义另一个名为Status的模型来存储我的状态 我的模型 我的问题是如何为每个状态设置布尔值?我想这样查询:bige.status.in\u loft=true。 从选项中,Activ和待售必须在_loft=True中有,而Lost、Dead必须在_loft=False中有。 有人能回答这个问题吗?是否有其他方法(可能更好)来设置鸽子状态并稍后参考? 谢谢 由于您的in_logt取决于status模型的status字段

我想在django开发一个鸽子应用程序,我的鸽子模型有状态字段。 为此,我必须定义另一个名为Status的模型来存储我的状态

我的模型 我的问题是如何为每个状态设置布尔值?我想这样查询:
bige.status.in\u loft=true
。 从选项中,Activ和待售必须在_loft=True中有
,而Lost、Dead必须在_loft=False中有
。
有人能回答这个问题吗?是否有其他方法(可能更好)来设置鸽子状态并稍后参考?

谢谢

由于您的
in_logt
取决于
status
模型的
status
字段的值,因此无需创建in_loft字段。一种更好的python方法是在
文件状态中使用一个自定义方法(带有属性装饰器)来获取in_logt的值。然后,您可以按照您的建议从鸽子状态的实例调用_loft

下面是示例代码:

class PigeonStatus(models.Model):
    STATUSES = [
        ('Activ', 'Activ'),
        ('Lost', 'Lost'),
        ('Dead', 'Dead'),
        ('For Sale', 'For Sale')
        ]

    status = models.CharField(max_length=15, choices=STATUSES, unique=True)

    @property
    def in_loft(self):
        return self.status == 'Activ' or self.status == 'For Sale'

class PigeonStatus(models.Model):
    STATUSES = [
        ('Activ', 'Activ'),
        ('Lost', 'Lost'),
        ('Dead', 'Dead'),
        ('For Sale', 'For Sale')
        ]

    status = models.CharField(max_length=15, choices=STATUSES, unique=True)

    @property
    def in_loft(self):
        return self.status == 'Activ' or self.status == 'For Sale'