2 回答
TA贡献1818条经验 获得超7个赞
django 中的 Queryset API(通常)返回其他查询集,这些查询集依次通过访问数据库进行评估。通过这样做,queryset.first()
您正在执行另一个数据库调用,您的属性尚未设置。
如果您需要在查询集is_used
之间保存此标志(保持更改),我建议您在模型上添加一个 BooleanField,或者可能找到另一种方法来执行您想要的操作,因为使用查询集 API 不会返回内存属性。
TA贡献1993条经验 获得超5个赞
如果您希望更改持续存在,则需要self.save()在设置后调用is_used,假设这is_used是Appellation模型上的一个字段。
模型.py
from django.db import models
class Appellation(models.Model):
# ... rest of code ...
is_used = models.BooleanField(default=False)
def is_used_flag(self):
self.is_used = True
self.save()
def is_not_used_flag(self):
self.is_used = False
self.save()
请注意,Django 实例仍然是 Python 对象,因此动态添加属性将以相同的方式工作,这就是它True在您提供的代码中按预期打印的原因。
添加回答
举报