【问题标题】:django-tastypie: How can I get only one object from ManyToMany relation?django-tastypie:如何从 ManyToMany 关系中只获取一个对象?
【发布时间】:2012-09-05 18:18:46
【问题描述】:

这是我的菜单模型:

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 是活动菜单对象的字符串表示形式。我想,我需要序列化一些东西。

有什么想法吗?

【问题讨论】:

  • 你有你的 Meta: queryset = Shop 或类似的东西吗?

标签: django-models tastypie


【解决方案1】:

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

但是我认为,为了获得您需要的内容,您可能需要将属性参数指定为可调用对象,如下所示:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-05
    • 2013-04-06
    • 2022-12-22
    • 1970-01-01
    • 2013-11-16
    • 2016-09-05
    • 2011-06-24
    相关资源
    最近更新 更多