Django-使用pk_url_kwarg有选择地查询模型

时间:2018-07-25 01:41:50

标签: python django django-models django-views

请考虑以下两个模型并查看:

models.py

class BHA_List(models.Model):
    well = models.ForeignKey(WellInfo, 'CASCADE', related_name='bha_list')
    bha_number = models.CharField(max_length=100)

class BHA_overall(models.Model):
    bha_number = models.ForeignKey(BHA_List, 'CASCADE', related_name='bha_overall')
    drill_str_name = models.CharField(max_length=111)
    depth_in = models.CharField(max_length=111)

views.py

class BHA_UpdateView(UpdateView):
    model = BHA_overall
    pk_url_kwarg = 'pk_alt'
    form_class = BHA_overall_Form

据我了解,pk_url_kwarg = 'pk_alt'将查询并返回model = BHA_overall的实例。

假设我使用的CBV以外的其他UpdateView,并且想要实现两个模型。所以像这样: model = (BHA_overall, BHA_List)。有什么方法可以强迫我的pk_url_kwarg = 'pk_alt'仅在BHA_List中查询和返回实例,而强迫我的get_object()返回BHA_overall中的对象?我应该使用什么CBV

1 个答案:

答案 0 :(得分:0)

您可以仅使用“查看”并定义发布和获取的方法。 大概是这样的:

class SomeView(View):
      model = BHA_List
      template_name = 'some.html'
      def get(request, **kwargs):
          overall = BHA_overall.objects.all()
          return render(request,
                        self.template_name,
                        locals())
      def get(request, **kwargs):
          return render(request, self.template_name, {})
相关问题