在 Django 项目中使用 sweetpie 将多个对象保存在同一模型中
Posted
技术标签:
【中文标题】在 Django 项目中使用 sweetpie 将多个对象保存在同一模型中【英文标题】:Save multiple objects in same model using tastypie in a Django project 【发布时间】:2015-06-06 00:12:53 【问题描述】:我有一个具有以下模型的 Django 项目:
from django.contrib.auth.models import User
class InstalledApps(models.Model):
user = models.ForeignKey(User)
app_package_name = models.CharField(max_length=50)
我正在使用tastepie 创建一个POST API 端点,以便用户可以在单个API 调用中将多个对象发布到InstalledApps 模型:
类 InstalledAppsResource(模型资源): 元类: queryset = InstalledApps.objects.all() 资源名称 = '应用程序' 授权=授权() 身份验证 = 身份验证() #validation = InstalledAppsValidation() list_allowed_methods = ['post', 'get'] always_return_data = True def 水合物(自我,捆绑): usrname = bundle.request.META['HTTP_AUTHORIZATION'][7:].split(':')[0] usr = User.objects.get(username__exact=usrname) 如果不是 bundle.obj.pk: bundle.obj.user = usr 退货捆绑当我尝试 POST 到此端点时:
curl -X POST -H "Content-Type: application/json" -H "Authorization: ApiKey username:abcde" -d '"app_package_name": ["pqr", "abc", "xyz"]' http://127.0.0.1:8000/api/v1/apps
我得到回应:
"app_package_name": "['pqr', 'abc', 'xyz']", "id": 16, "resource_uri": "/api/v1/apps/16"
即它不是在 InstalledApps 表中包含三行,而是创建一个将 InstalledApps.app_package_name
设置为 ['pqr', 'abc', 'xyz']
的单行
如何在 InstalledApps 表中保存三行?
谢谢!
【问题讨论】:
你试过用["app_package_name": "pqr", "app_package_name": "abc", "app_package_name": "xyz"]
的数据发帖吗?
【参考方案1】:
试试这个,
URI: http://127.0.0.1:8000/api/v1/apps
方法:补丁
要发送的数据:
"objects": [
"app_package_name": "pqr",
"app_package_name": "abc",
"app_package_name": "xyz"
]
卷曲命令:
curl -X PATCH -H "Content-Type: application/json" -H "Authorization: ApiKey username:abcde" -d '"objects": ["app_package_name":"pqr","app_package_name":"pqr"]' http://127.0.0.1:8000/api/v1/apps
【讨论】:
这行得通,但如果我编辑我的代码并添加这个code,那么响应对于“n”个对象有“n”个状态值。但是,如果我只想在输出响应中使用"status": 0
怎么办?以上是关于在 Django 项目中使用 sweetpie 将多个对象保存在同一模型中的主要内容,如果未能解决你的问题,请参考以下文章