我想根据其他字段来设置新字段的值。考虑到我想在设置2019-11-07T07:08:27.410Z 2625bba5-b8e1-40e4-8704-7c0d486f6dff INFO Success
2019-11-07T07:08:27.431Z 2625bba5-b8e1-40e4-8704-7c0d486f6dff INFO Success
的值后删除like_count
。
首次尝试:
我的模型。py:
like_status
现在我想向显示我的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)
我可以通过运行脚本来实现我的目标,但是我想知道无需编写脚本即可完成此过程的方法。谢谢您的时间
答案 0 :(得分:0)
您可以使用Model methods来设置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