[英]Django choices. How to set a option to be selected only once
我正在写博客。 我在一节中会有一个特别的帖子。 还有另一页,其中有我的特别文章集。 这是我的模型
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', )
特别职位中只能有一个职位。 添加新的特殊职位后,旧的特殊职位应转换为非活动特殊职位。 因此,它可以显示在“特殊帖子集”页面中。 我怎样才能做到这一点?
正如@ 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)
当您添加新帖子时,请像这样change_actual_post = Post.objects.get(specialpost=0)
查询条件: change_actual_post = Post.objects.get(specialpost=0)
,然后更改旧帖子的状态change_actual_post.specialpost = 2
最后保存change_actual_post.save()
。
在添加新的特殊帖子之前,将这3行添加到您的views.py文件中
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.