django-tastypie:我如何从ManyToMany关系中只获得一个对象?

时间:2012-09-05 18:18:46

标签: django-models tastypie

这是我的菜单型号:

class Menu(models.Model):
    name = CharField(max_length=255)
    shop = ForeignKey(Shop)
    is_active = BooleanField(default=False)

我需要的是,在ShopResource中,ShopResource.menu只返回活动的Menu对象。因为总有1个活动的Menu对象。

在ShopResource中,我正在尝试:

def dehydrate(self, bundle):
    bundle.data['menu'] = bundle.obj.menu_set.get(is_active=True)
    return bundle

但ShopResource.menu是活动菜单对象的字符串表示形式。我猜,我需要序列化一些东西。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

由于您没有提供资源的任何详细信息(即资源的源代码),因此有点难以弄清楚您需要什么以及您目前的情况。

但是我认为为了得到你需要的东西,你可能想要将属性参数指定为可调用的,如下所示:

attribute=lambda bundle: Menu.objects.filter(shop=bundle.obj, active=True)

这允许过滤M2M关系中的对象。

Tastypie没有说太多(见Tastypie docs),但希望这会让你开始。