我正在尝试编写一个简单的web应用程序,在这里我可以上传csv文件并返回每个文件的标题。一切正常。文件的路径id保存在数据库中
我得到的答复是:
{
"id": 1,
"filefield": "http://127.0.0.1:8000/api/merged/1/uploads/header_body_test_zZr4Cea.csv"
}
我不明白的是,我在哪里或者如何处理我从数据库请求的数据? 我想象的是一个不同的url路由,在这里我可以指定一个id,响应如下:
{
"id": 1,
"filefield": "http://127.0.0.1:8000/api/merged/1/uploads/header_body_test_zZr4Cea.csv"
"headers_of_csv": "Date;Amount"
}
我很难解释(或谷歌)我的问题到底是什么。我不明白代码在哪里或者如何做到这一点(它是序列化程序的一部分,还是视图的一部分,还是模型的一部分?)
或者更简单地说,假设我有一个模型,它有一个id和一个3位数的数字,并返回:
{
"id": 1,
"number": 567
}
如何或在何处创建这样的响应:
{
"id": 1,
"number": 567
"first_digit_or_number": 5
}
任何帮助都是非常感谢的,我只是不明白我应该寻找什么
让我们从你的简单问题开始。您可以使用示例中的模型:
然后通过发送
POST
请求来创建此模型的实例,该请求将生成以下对象:现在您需要返回一些关于这个对象的附加信息,至少在本例中,这些信息不存储在数据库中,而是从关于这个对象的其他信息中派生出来的。这就是模型属性派上用场的地方
注意,如果您使用的是django rest框架,you will need to manually add this field to your serializer
回到CSV文件的示例,这意味着您可以向模型中添加
headers_of_csv
属性,该属性将包含内省文件并返回头的代码不过,根据您的用例,这里有一个潜在的性能问题。如果您想在列表视图中公开这个属性(即-
GET /thing/
而不是GET /thing/{id}/
),您可能会打开数千个文件来容纳一个请求(因为每次都会动态生成信息)。这没有多大意义,因为只有CSV文件更改时,信息才会更改。在本例中,您可以考虑添加headers_of_csv
作为实际的数据库列,并添加populate it when a model gets saved相关问题 更多 >
编程相关推荐