[英]Tastypie get_or_create object
是否可以在asteapie中创建默认对象? 我想在首次通过REST API检索对象时创建一个对象,因此总会有一个返回值。 我可以在dehydrate
进行此操作,但是我还需要考虑GET
参数来创建对象。 什么是重载的最佳方法?如何关联对象(GET参数所指)?
我可能已经找到“ a”解决方案。
在ModelResource
,我重载obj_get_list
:
def obj_get_list(self, bundle, **kwargs):
if bundle.request.method == 'GET':
related_id = bundle.request.GET['entity']
# create new object if it doesn't exist and populate with `related_id`
# ...
objects = ModelResource.obj_get_list(self, bundle, **kwargs)
return objects
调用此网址的GET参数为/url/to/resource?entity=1
。
这个解决方案有什么问题吗? 谁能预见到不良的副作用?
另一种方法是重写obj_get函数。
def obj_get(self, bundle, **kwargs):
pk = kwargs['pk']
if pk.startswith('identifier'):
pk = pk.replace("identifier/", "")
instance, created = Model.objects.get_or_create(identifier=pk)
kwargs['pk'] = str(instance.pk)
return super().obj_get(bundle, **kwargs)
这允许使用以下格式的URL: /url/to/resource/identifier/*some_identifier*
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.