我正在写博客。我有一个部分会有一个特殊的帖子。另一页我收集了特别帖子。这是我的model.py
class Post(models.Model):
post = models.TextField()
SPECIAL = (
('0', 'Special Post'),
('1', 'General Post'),
('2', 'Inactive Special Post'),
)
specialpost = models.CharField(max_length=1, choices=SPECIAL, default='1', )
特刊中只能有一个帖子。当添加新的特殊职位时,旧的特殊职位应转移到非活动特别职位。所以它可以在特别邮件收集页面中显示。我怎样才能做到这一点?
答案 0 :(得分:1)
正如@ neeraj-kumar在评论中提到的,你可以通过覆盖模型的save()
方法来实现这一点。添加到Post类是这样的:
class Post(models.Model):
...
def save(self, *args, **kwargs):
special_post = Post.objects.filter(specialpost='0')
if self.specialpost == '0' and special_post:
special_post.update(specialpost='2')
super(Post, self).save(*args, **kwargs)
答案 1 :(得分:0)
当您添加新帖子时,请按照此change_actual_post = Post.objects.get(specialpost=0)
过滤查询,然后更改旧帖change_actual_post.specialpost = 2
的状态,最后保存change_actual_post.save()
。
在添加新的特殊帖子
之前,将这3行添加到views.py文件中