簡體   English   中英

Django選擇。 如何設置一個只能選擇一次的選項

[英]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', )

特別職位中只能有一個職位。 添加新的特殊職位后,舊的特殊職位應轉換為非活動特殊職位。 因此,它可以顯示在“特殊帖子集”頁面中。 我怎樣才能做到這一點?

正如@ n​​eeraj-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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM