我想在django开发一个鸽子应用程序,我的鸽子模型有状态字段。 为此,我必须定义另一个名为Status的模型来存储我的状态
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)
in_loft = models.BooleanField('In loft?')
def __str__(self):
return self.status
class Pigeon(models.Model):
pigeon_id = models.AutoField(primary_key=True)
year = models.CharField(max_length=4, null=False, blank=False)
band = models.CharField(max_length=25, null=False, blank=False, unique=True)
...
status = models.ForeignKey(PigeonStatus, on_delete=models.CASCADE, null=False, blank=False)
我的问题是如何为每个状态设置布尔值?我想这样查询:Pigeon.status.in_loft = true
。
从选项中,Activ和待售必须有in_loft=True
和Lost,Dead必须有in_loft=False
。
有人能回答这个问题吗?是否有其他方法(可能更好)来设置鸽子状态并稍后参考?
谢谢
由于
in_logt
依赖于PigeonStatus
模型的status
字段的值,因此无需创建in_loft字段。更好的pythonic方法是在PigeonStatus
中有一个自定义方法(带有属性装饰器)来获取in_logt的值。然后,您可以按照您的建议从鸽子状态的实例调用_loft下面是示例代码:
相关问题 更多 >
编程相关推荐