1

django フィールドと property() 関数によって呼び出されるいくつかのプロパティを持つ django モデルがある場合、tastypie はこの仮想フィールドと対話できますか? または、tastypie の 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

それが短い場合、x = 1、y = 2 を tasypie で渡すと、x はどのようになりますか?

4

1 に答える 1

1

メソッドから取得したリソースのフィールドが必要な場合は、次のようなものを含めることができます。

method_field = fields.CharField(attribute='my_method')
于 2013-03-09T23:25:01.290 に答える