django views List to Detail 搜索参数

django views List to Detail search parameter

我有 2 个模型:

Ovt 仅是文档 header 数据 (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

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

DetailView 始终默认根据 URL 中传递的 PK 获取一个对象。这是 Django 文档中的示例。

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

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

那么你的详细视图将是这样的。

class PublisherDetail(DetailView):
    model = Publisher

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


I need to to access the list of rows in Ovr that refers to a selected Ovt, by mycommonfield.

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

这也可以使用 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