django - 根据其他字段设置新字段的值
问题描述
我想根据其他字段设置新字段的值。考虑我想like_count
在设置like_status
值后删除。
第一次尝试:
我的模型.py:
class Post(Model):
title = models.CharField( max_length=100)
like_count = models.IntegerField(default=0)
现在我想向Post
我的模型添加新字段,显示我是否喜欢或不喜欢:
class Post(Model):
title = models.CharField( max_length=100)
like_count = models.IntegerField(default=0)
like_status = models.BooleanField(default=False if str(F('like_count')) == 0 else True)
运行迁移后,所有值like_status
都是True
同时存在一些 Post 的对象like_count=0
like_status
第二次尝试:
添加False
默认值:
class Post(Model):
title = models.CharField( max_length=100)
like_count = models.IntegerField(default=0)
like_status = models.BooleanField(default=False)
然后尝试更新like_status
字段:
Post.objects.all().update(like_status=True if F('like_count')>0 else False)
错误:
'>' not supported between instances of 'F' and 'int'
并尝试:
Post.objects.all().update(like_status=True if int(F('like_count'))>0 else False)
错误:
int() argument must be a string, a bytes-like object or a number, not 'F'
我可以通过运行脚本来实现我的目标,但我想知道在没有脚本的情况下执行此过程的方式。谢谢您的时间
解决方案
您可以使用Model 方法来设置 like_status 的值:
class Post(models.Model):
title = models.CharField( max_length=100)
like_count = models.IntegerField(default=0)
@property
def like_status(self):
if self.like_count == 0:
return False
else :
return True
推荐阅读
- android - Android 房间:LiveData 上的调用值可以用来返回纯数据吗?
- lua - 如果我迅速获得战利品然后离开,为什么这个 roblox 脚本不会保存?
- python - 从 excel/csv 表中提取特定值以在 Python 中形成另一个表
- c++ - C++项目使用Sqlite数据库如何发布或部署?
- javascript - 使用 AutoComplete JQuery (ASP.NET, C#) 时如何单击以进行选择
- scala - 在 unapply 中找不到 Scala 无形 Generic.Aux 隐式参数
- javascript - 开始使用客户端创建的 Oauth2 授权
- ios - Xcode 10 Splash Screen Resizable Logo Image
- angular - Angular 中的组件树与视图层次结构
- amazon-web-services - 如何从 terraform 重新开始?