我有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
答案 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