[英]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.