在数据表的字段数组中使用修饰方法(@property)(django-eztables)

时间:2014-10-13 11:25:40

标签: python django datatables

我正在使用django-eztables app(0.3.2),并且我试图在字段中使用某些模型的属性:

模特的课程:

class AModel(models.Model):
    ...
    @property
    def a_property(self):
        return 'something'

eztables'视图:

class AView(DatatablesView):
    model = AModel
    fields = [
        ...,
        "a_property",
    ]

根据我所看到的,这不起作用,因为eztables'中的方法process_dt_responseDatatablesView类在查询集上使用.values(*self.get_db_fields())

执行此操作的唯一方法是,我发现在我的AView课程中覆盖了所提到的方法,只删除了提到的values来电:

def process_dt_response(self, data):
    self.form = DatatablesForm(data)
    print self.form
    if self.form.is_valid():
        self.object_list = self.get_queryset()
        return self.render_to_response(self.form)
    else:
        return HttpResponseBadRequest()

这样可以(会有其他一些不良副作用)吗?还有其他更好的方法吗?

1 个答案:

答案 0 :(得分:0)

对我有用的一个策略是在将数据返回给客户端之前附加其他数据。 render_to_response()调用get_row()来获取最终数组(对于每个记录)。覆盖get_row()并附加自定义数据。这里的一个假设是,get_row()中可以获得获取/生成其他自定义数据所需的所有数据。