2017-07-09 9 views
0

私はブログを作成しています。私は特別な投稿があるセクションを持っています。そして私は特別な投稿のコレクションを持っている別のページ。ここに私の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',) 

私は特別投稿に1つだけ投稿する必要があります。新しい特別投稿が追加されると、古い特別投稿は非アクティブ特別投稿に移動する必要があります。それは特別なポストページのコレクションに表示することができます。これどうやってするの?

+0

新しい特別なポストを追加するには、views.pyファイルにこのタスク –

答えて

1

@ neeraj-kumarはコメントに記載されているように、モデルのsave()メソッドをオーバーライドすることで実現できます。あなたは、新しいポストを追加し、このchange_actual_post = Post.objects.get(specialpost=0)のようなクエリをフィルタリングして、change_actual_post.save()を保存最終的にあなたの古いポストchange_actual_post.specialpost = 2のステータスを変更するとき

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

新しい編集作業を行うためのDjangoのモデルの保存方法オーバーライドをこれらの3行を追加します。ここ は、私が使用するものです。 'デフ(自己、* argsを、** kwargsから)を保存します。 self.specialpost == '0' の場合: special_post = Post.objects.filter(propic = '0') 場合special_post: special_post.update(specialpost = '2') スーパー(ポスト、自己).save(* args、** kwargs) ' –

0

:クラスにこのような何かを投稿に追加。

は前

関連する問題