关于python:通用迭代视图模型

Genericizing an iterative view model

我想知道是否可以将下面的函数设为通用函数,以便它迭代任何给定的模型,并且不需要像下面的函数那样在该模型中声明所有字段。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def CustomerTable(ExampleModel):
    CustomerInfo = ExampleModel.objects.all()
    CustomerJson = []
    for customers in CustomerInfo:
        CustomerJson.append({
                            'ID': customers.ID,
                            'Title': customers.Title,
                            'Name': customers.Name,
                            'Description': customers.Description,
                            'Location': customers.Location,
                            'DateAdded': customers.DateAdded,
                            })
    CustomerTable = {'Records' :CustomerJson}
    Return HttpResponse (CustomerTable)

谢谢你的帮助!


查看以下文章:django:获取模型字段列表?

您可以调用更多的方法,请查看官方文档:https://docs.djangoproject.com/en/1.8/ref/models/meta/retrieving-all-field-instances-of-a-model


可以将模型作为参数传递给函数:

1
def CustomerTable(anymodel):

然后可以在提供的字段上构建JSON迭代

1
anymodel._meta.get_all_field_names()

但是,字段的映射将不准确(外键的字段名_id)。

因此,正如郑的回答中提到的,最好使用

1
anymodel._meta.get_fields()