2016-11-24 13 views
0

だが、私はこのようになりますListViewを持っているとしましょうCarsListViewが正しく動作している直接リンク

class Car(models.Model): 
    created = models.DateTimeField() 
    brand = models.CharField(max_length=30) 

    class Meta: 
     ordering = ("created",) 

は私にすべての車を示しますcreatedで注文します。ここまでは順調ですね。

車ごとにDetailViewを作成する代わりに、特定の車の受信リクエストを正しいページのCarsListViewにリダイレクトするビューを追加したいとします。

class CarsRedirectView(RedirectView): 
    def get_redirect_url(self, *args, **kwargs): 
     car = Car.objects.get(pk=kwargs["pk"]) 
     # stuck here 
     return "hmm?" 

私が本当にここで知る必要があるのは、車のページです。これを行う1つの方法は、すべてのCarオブジェクトをフェッチして、車に当たるまでページを数えることです。

良い方法がありますか?これに

+0

をそれか、そのプロパティにアクセスすることができますが、車の 'DetailView'に' ListView'から行ってみたい、私は右ですか? –

+0

私はあなたが尋ねていることを理解していません...特定のオブジェクトがページされたリストのどのページにあるのか探したいですか? – Sayse

+0

@Sayse yup。現在、オブジェクトの前にあるアイテムの数を数え、 'paginate_by'で分割して、オブジェクトがあるページ番号を取得します。 – Johnny

答えて

0

一つの方法は、次のようになります - 1)あなたの車のURLをダイナミックにします(ビューの引数として車のIDを渡すために正規表現を使用)

url(r'^car/(?P<car_id>[0-9]+)/$', 'your_app.views.car_detail', name='detail'), 

2)ビューを処理します。このように: - ここに

def car_detail(request, car_id): 
    car = Car.objects.get(pk=car_id) 

あなたは詳細を表示するためのテンプレートに車のオブジェクトを渡すためにコンテキストを使用することができます: -

context = {"car":car} 
    return render(request, "details.html", context) 

3)今すぐあなたのテンプレート「details.html」であなたは、このように

<h1>Car Details</h1> 
<h3>{{ car.property }}</h3>