def __get__(self, instance, owner):
from restframeworkclient.models import Model
def callable(**kwargs):
def get_value(value):
if isinstance(value, dict):
return json.dumps(value, cls=DjangoJSONEncoder)
if value in (datetime.datetime.now, timezone.now):
return value()
if isinstance(value, Model):
return value.pk
return value
kwargs = {k: get_value(v) for k, v in kwargs.items()}
arg_name = 'data' if self.method == 'POST' else 'params'
if self.static:
url = owner._resources_url() + self.subresource + '/'
data = owner._rest_call(url, method=self.method, **{arg_name: kwargs})
else:
url = instance._resource_url(instance.pk) + self.subresource + '/'
data = instance._rest_call(url, method=self.method, **{arg_name: kwargs})
if self.unwrapping_key:
data = data[self.unwrapping_key]
if self.model:
obj = self.model(**data)
obj._persisted = True
return obj
return data
return callable() if self.as_property else callable
评论列表
文章目录