繁体   English   中英

Tastypie get_or_create对象

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM