django查看List to Detail搜索参数

时间:2015-05-01 14:33:19

标签: django django-views

我有2个型号:

Ovt仅为文档标题数据(ovtnumber = mycommonfield)

Ovr这是所有引用Ovt的字段,其字段不是pk(mycommonfield只能引用一个Ovt)。

我需要通过mycommonfield访问Ovr中引用所选Ovt的行列表。

views.py

class OvtListView(ListView):
    """ header """
    model = models.Ovt 


class OvtDetailView(DetailView):
    """  rows """ 
    model = models.Ovr
    # SELECT ••• FROM "ovr" WHERE "ovr"."id" = 1

我需要的是生成的SQL类似于:

SELECT ••• FROM "ovr" WHERE "ovr"."mycommonfield" = 1

1 个答案:

答案 0 :(得分:0)

我没有得到你所需要的。但是根据我的理解,您希望使用详细视图获取对象。

默认情况下,

DetailView始终根据URL中传递的PK获取一个对象。以下是Django docs的一个例子。

如果您有此URL模式,它将提供作者的详细信息

urlpatterns = [
    #...
    url(r'^authors/(?P<pk>[0-9]+)/$', AuthorDetailView.as_view(), name='author-detail'),
]

然后你的详细视图会是这样的。

class PublisherDetail(DetailView):
    model = Publisher

如果您想添加额外的上下文,可以使用方法get_context_data

  

我需要访问Ovr中引用所选行的行列表   Ovt,来自mycommonfield。

据此我了解到,您希望将详细视图中选择的OVT列表链接传递给您的模板

这也可以使用get_context_data

来完成
class OvtDetailView(DetailView):
    """  rows """ 
    model = models.Ovt

    def get_context_data(self, **kwargs):
        # get the list of OVRs and add it to the context

        context = super(OvtDetailView, self).get_context_data(**kwargs)
        context['ovrs'] = models.Ovr.objects.filter(mycommonfield=self.object.pk)
        return context