gpt4 book ai didi

python - django 模型字段的不同 setter 和 getter

转载 作者:太空宇宙 更新时间:2023-11-03 21:39:25 28 4
gpt4 key购买 nike

我在 django 中有一个空 bool mysql 字段:

class Invoice(models.Model):
...
status = models.NullBooleanField()

但是,当我调用它时,我希望它返回以下内容:

@property
def status(self):
return "Pending" if self.status is None else "Paid" if self.status == 1 else "Failed"

(1)将数据设置为 bool 值的正确方法是什么;但是(2)当调用它时会收到文本吗?例如:

>>> invoice = Invoice()
>>> invoice.status = True
>>> invoice.save()
>>> invoice.status
"Paid"

最佳答案

我的建议是将属性重命名为文本字段,例如:

@property
def status_text(self):
return "Pending" if self.status is None else "Paid" if self.status == 1 else "Failed"

另一种选择是使用以下方法:

class User(models.Model):
_status = models.NullBooleanField(db_column='status')

@property
def status(self):
return "Pending" if self.status is None else "Paid" if self.status == 1 else "Failed"

@first_name.setter
def status(self, value):
self.status = status

但是,第二种方法并不是真正的解决所有问题,因为您将无法执行以下操作:

User.objects.filter(status=True)

这就是为什么我建议使用更明确的第一种方法。

关于python - django 模型字段的不同 setter 和 getter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52996753/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com