2

我正在尽我所能返回相关记录 id 的值(外键引用)使用美味派。默认情况下,从结果中过滤掉外键。

我有以下模型:

class Category(models.Model):
    """Finance category"""
    class Meta:
        db_table = 'category'
    parent = models.ForeignKey('self')
    name = models.CharField(max_length=32)
    TYPES = (
        ('outcome', 'outcome'),
        ('income', 'income'),
    )
    type = models.CharField(max_length=7,choices=TYPES)
    created_at = models.DateTimeField()
    updated_at = models.DateTimeField()
    created_by = models.ForeignKey(User, db_column='created_by', related_name='createdCategories')
    updated_by = models.ForeignKey(User, db_column='updated_by', related_name='updatedCategories')

我这里有两个关系。parent是递归关系(它是一个类别树表)。created_by是与用户的关系。API 返回以下值:* id * name * created_at * updated_at * type * resource_uri

我能做些什么来让tastepie返回父(_id)或created_by(或任何外键)?

以下是我从另一个操作系统问题中尝试过的:

class IncomeCategoryResource(ModelResource):
    parent_id = models.IntegerField(attribute="parent_id")
    class Meta:
        queryset = Category.objects.filter(type='income')

不幸的是,整个 API 都失败了:

__init__() got an unexpected keyword argument 'attribute'

我也尝试将attributekwarg替换为db_column. 这个只是被忽略了。

请帮帮我 :)

4

1 回答 1

4

首先,IntegerField有错误。您应该使用tastypie 的字段(tastypie.fields),而不是django 模型字段(django.db.models)。然后您的资源应如下所示:

class IncomeCategoryResource(ModelResource):
    parent_id = IntegerField(attribute="parent__id")
    class Meta:
        queryset = Category.objects.filter(type='income')

请注意使用双下划线来获取父级的 id 字段。

于 2013-08-15T13:10:32.800 回答