Python 如何在django-tables2中调用非模型字段

Python 如何在django-tables2中调用非模型字段,python,html,django,django-models,django-tables2,Python,Html,Django,Django Models,Django Tables2,我的应用程序(app1)中有几个型号。但我想从在app1中创建的djnago-tables2中的另一个应用程序(app2)中创建的模型中调用一个字段。我怎么称呼它?我试了好几种方法,但都没能成功。错误说明无法将关键字u'xyz'解析为字段。。如果要在Django-Tables中使用多个模型,请提供帮助。2我建议您避免在表格中定义模型,因此表格可能如下所示: class NonModelTable(tables.Table): name = tables.columns.TemplateC

我的应用程序(app1)中有几个型号。但我想从在app1中创建的djnago-tables2中的另一个应用程序(app2)中创建的模型中调用一个字段。我怎么称呼它?我试了好几种方法,但都没能成功。错误说明
无法将关键字u'xyz'解析为字段。
。如果要在Django-Tables中使用多个模型,请提供帮助。2我建议您避免在表格中定义模型,因此表格可能如下所示:

class NonModelTable(tables.Table):
    name = tables.columns.TemplateColumn(template_code=u"""{{ record.name }}""", orderable=True, verbose_name='Name')
    surname = tables.columns.TemplateColumn(template_code=u"""{{ record.surname }}""", orderable=True, verbose_name='Surname')
    address = tables.columns.TemplateColumn(template_code=u"""{{ record.address }}""", orderable=True, verbose_name='Address')

    class Meta:
        attrs = {'class': 'table table-condensed table-vertical-center', 'id': 'dashboard_table'}
        fields = ('name', 'surname', 'address')
        sequence = fields
        order_by = ('-name', )
当您像这样定义表时,您可以传递一个字典列表来初始化表,但是这个字典需要有这3个字段(名称、姓氏、地址),即使它们是空的

您没有提供有关确切数据结构的任何信息,因此我发明了这个只有3个字段的表,要使用不同的模型初始化这样的表,您应该生成一个标准的dict列表,如:

data = []
object_1 = YourModel.objects.all()
for object in object_1:
   data.append({'name': object.name, 'surname': object.type, 'address': ''})

object_2 = Your2ndModel.objects.all()
for object in object_2:
   data.append({'name': object.name, 'surname': object.status, 'address': object.warehouse})

table = NonModelTable(data)

return render(request, 'template.html', {... 'table':table,...})
当然,字段的数量是可自定义的,您可以有任意数量的字段和您想要的名称,但是当您初始化de table时,DICT列表中的DICT必须遵循表结构,所有DICT必须具有表定义中显示的所有字段

编辑:另一个选项 如果不想修改表,可以使用要传递到表的数据生成DICT列表,并按照第一个模型结构附加来自其他模型的数据:

  • 从app1获取所有对象
  • 生成包含表所需字段的DICT列表
  • 从app2获取所有对象
  • 使用app1模型中相同的dict键附加app2中的对象
  • 使用
    table=YourTable(数据)