2016-08-14 60 views
0

我通用的DetailView:动态筛选PK中查询集

class CircularDetail(DeleteView): 
    model = Circular 
    template_name = 'genre/circular_detail.html' 

    def get_context_data(self, **kwargs): 
     ctx = super(CircularDetail, self).get_context_data(**kwargs) 
     ctx['c'] = Circular.objects.get(pk=1) 
     ctx['sittings'] = Sitting.objects.all() 

     return ctx 

我的圆形模式:

class Circular(models.Model): 
    cir_no = models.IntegerField(blank=False) 
    sit_start_date = models.DateField(blank=False) 
    sit_end_date = models.DateField(blank=False) 
    sess_no = models.ForeignKey(Session, 
           on_delete=models.CASCADE) 
    parl_no = models.ForeignKey(Parliament, 
           on_delete=models.CASCADE) 
    class Meta: 
     unique_together = ('cir_no', 'sess_no',) 

这只能说明当PK = 1,但我想动态分配的PK值,这样,当我选择了不同的pk会给出相应的数据。

我怎么能动态分配的PK值?

+0

假设的观点实际上是基于DetailView,而不是DeleteVie w,你想要的是它自动执行的操作;删除'c'的定义,只需访问模板中的'object'。 –

+0

我不清楚你的回复。如果我删除c会在那里。目前pk = 1是否只返回循环号1而不是其他号。我想通告第2,3,等等 – ohid

+0

一个的DetailView的全部意义在于,它已经是负责与填充与PK相关联的对象模板上下文。正如我所说,它是以“物体”的形式出现的。 –

回答

0

您可以执行以下操作和访问对象模板

样品网址

url(r'^circular/(?P<pk>\d+)/details/$', 
    CircularDetail.as_view(), 
    name="circular_detail") 

意见

from django.views.generic.detail import DetailView 

class CircularDetail(DetailView): 
    model = Circular 
    template_name = 'genre/circular_detail.html' 

在template.html

<div> 
    CIR No: {{ object.cir_no }} 
    Sit Start Date : {{ object.sit_start_date }} 
</div> 
+0

谢谢您的回答,但我的要求是不同的。这里Cir no与坐的日期有关,所以每个cir有不同的坐位。 – ohid

+0

你能用坐式更新你的问题吗? –

+0

这里是我的问题的链接:http://stackoverflow.com/questions/38939288/change-scheduled-date-to-another-date-with-transfering-content-and-filter-pk-dyn。这个问题1现在是相关的。 – ohid