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() |