【问题标题】:TastyPie and propertiesTastyPie 和属性
【发布时间】:2012-12-30 23:06:53
【问题描述】:

如果我有一个带有 django 字段和一些由 property() 函数调用的属性的 django 模型,tastepie 可以与这个虚拟字段交互吗?或者我必须在tastepie的dehydrate、obj_create、obj_update函数中加入逻辑?

型号:

class A (models.Model):
    x = models.CharField()
    def get_y(self):
        return self.x
    def set_y(self, value):
        self.y = value
    y = property(get_y, set_y)

资源可以这么短吗:

class AResource(ModelResource):
    class Meta:
        queryset = A.objects.all()
        fields = ['id','x','y']

或者应该只要:

class AResource(ModelResource):
    class Meta:
        queryset = A.objects.all()
        fields = ['id','x','y']

def dehydrate(self, bundle):
    bundle.data['y'] = bundle.obj.x
    return bundle


def obj_create(self, bundle, request=None, **kwargs):
    bundle.obj.y = bundle.data['y']
    bundle = super(AResource, self).obj_create(
        bundle,
        request,
    )

    return bundle

def obj_update(self, bundle, request=None, **kwargs):
    bundle = super(AResource, self).obj_update(
        bundle,
        request,
    )
    bundle.obj.y = bundle.data['y']
    return bundle

如果它可以很短,那么如果我通过 tasypie 传递 x = 1, y = 2,那么 x 等于多少?

【问题讨论】:

    标签: django django-models tastypie


    【解决方案1】:

    如果您希望资源中的字段来自方法,则可以包含以下内容:

    method_field = fields.CharField(attribute='my_method')
    

    【讨论】:

    猜你喜欢
    • 2014-10-26
    • 1970-01-01
    • 1970-01-01
    • 2016-07-22
    • 2014-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多