2016-12-19 8 views
0

私はDjango 1.8のアプリを持っています。最後のオブジェクト(pub_dateに基づいて)を取り込み、is_mainteaserにこのオブジェクトを設定し、残りはFalseに設定してください。クエリーセットの最後のオブジェクトを取得し、フィールドに値を設定します

ここに私のコードですが、最新のオブジェクトはTrueに設定されていません。ここで

class ArticleListView(ListView): 
    model = Article 
    queryset = Article.objects.order_by('-pub_date') 

    def get_context_data(self, **kwargs): 
     context = super(ArticleListView, self).get_context_data(**kwargs) 
     lates_object = Article.objects.latest('pub_date') 
     lates_object.is_mainteaser = True 
     return context 

は私のモデルである:

class Article(model.Models): 
    title = models.CharField(max_length=255) 
    short_text = models.TextField(max_length=10000, default='') 
    image = FilerImageField(null=True) 
    pub_date = models.DateTimeField('date published') 
    online_from = models.DateTimeField('online from', blank=True) 
    online_to = models.DateTimeField('online to', blank=True) 
    position = models.PositiveIntegerField(default=0) 
    is_mainteaser = models.BooleanField(default=False) 

    def __str__(self): 
     return self.title 

    class Meta: 
     ordering = ['position'] 
+0

あなたは決してそれを保存しません...しかし、なぜあなたは 'get_context_data'でこれをやっていますか? – Sayse

+0

@それは別の方法であるはずですか? –

+0

さて、私はあなたのために何を設定しているのかわからないので、誰かがリストビューを訪問するたびに保存されるので、それは無駄だろうと私はあなたに言うことができないように見える – Sayse

答えて

0

あなたがオブジェクトインスタンスと変更モデルを持っている場合は、インスタンスを保存する必要があります属性。例:

lates_object = Article.objects.latest('pub_date') 
lates_object.is_mainteaser = True 
lates_object.save() 

この記事では、新しい記事を追加する際に、djangoのシグナルやアクションを使用する方が良いと思います。 ListViewでそれを行う良い解決策ではありません。

関連する問題