2011-07-04 6 views
1

で動作するようにサイト上でDjangoのプレビューを取得する私は本当に私はDjangoのCMSサイトで使用している新しい、ブログアプリを構築しているは非公表ポスト

、誰かがこの問題にいくつかの光を当てることができると思います。クライアントは、彼らがこれを達成するためには、ウェブサイト

に公開される前に、ブログやニュース記事は、エディタを通過することを要求された私は、各モデルのモデル管理(ブログやニュース)この中に、次の

def publish(self, request, queryset): 
    rows_updated = queryset.update(status='p') 
    if rows_updated == 1: 
     message_bit = "1 story was" 
    else: 
     message_bit = "%s stories were" % rows_updated 
    self.message_user(request, "%s successfully marked as published." % message_bit) 

def un_publish(self, request, queryset): 
    rows_updated = queryset.update(status='w') 
    if rows_updated == 1: 
     message_bit = "1 entry was" 
    else: 
     message_bit = "%s entries were" % rows_updated 
    self.message_user(request, "%s successfully marked as un-published." % message_bit) 

をしましたクライアントは、ブログのステータスや公開された新しい投稿を更新することができます。ただし、クライアントは公開前に投稿をプレビューできるように要求しています。私のブログと新しいクエリセットは、公開のために 'p'のステータスを持つ投稿のみを返すので、djangoの管理インターフェースに組み込まれたサイト上のプレビュー機能を使用して投稿を表示しようとすると、新しい/ブログの一致するクエリが失敗する

誰おそらく、このための回避策は何かをお勧めしてしまった私は、ページの標準的な1と同じようにレンダリングするが、ステータスを超えるフィルタリングしない別のビューを作成することができますきれいなコードを維持するには、この作業

おかげ

答えて

3

を取得しようとすることができ。

edit/add get_absolute_urlので、管理リンクを使用すると、状態= "w"の場合、新しいビューのアドレスが返されます。すなわち:

def get_absolute_url(self): 
    if self.status == 'p' 
     return "/post/%i/" % self.id 
    else: 
     return "/preview/post/%i/" % self.id 

PS:あなたは純粋主義者であれば、あなたがパーマリンクデコレータを使用して好むかもしれない:)

@models.permalink 
def get_absolute_url(self): 
    if self.status == 'p' 
     return ('post.views.details', [str(self.id)]) 
    else: 
     return ('post.views.preview', [str(self.id)]) 

参照:御馳走を働いたhttp://docs.djangoproject.com/en/dev/ref/models/instances/

+0

グレート回答ありがとう!!とてもシンプルすぎる!なぜ私はそれを考えるのdidntを知っている!ありがとうございました –

+0

私はそれが助けてうれしいです! – Munhitsu

関連する問題