Django Tastypie,从ManyToMany字段中删除元素

时间:2013-06-13 11:26:47

标签: tastypie

我正在使用Tastypie,Django来完成我的项目。 要更新多个到多个字段,我使用了save_m2m hook。

def save_m2m(self, bundle):
      for field_name, field_object in self.fields.items():
        if not getattr(field_object, 'is_m2m', False):
            continue

        if not field_object.attribute:
            continue

        if field_object.readonly:
            continue

        related_mngr = getattr(bundle.obj, field_object.attribute)
        related_objs = []
        print bundle.data[field_name]
        for related_bundle in bundle.data[field_name]:
          try:
            stock = Stock.objects.get(nse_symbol = related_bundle.obj.nse_symbol)
            print stock.__dict__
          except Stock.DoesNotExist as e:
            dataa = {"error_message": e}
            raise ImmediateHttpResponse(response=HttpBadRequest(content=json.dumps(dataa), content_type="application/json; charset=UTF-8"))
          related_objs.append(stock)
        related_mngr.add(*related_objs)

现在我想从同一个多个字段中移除元素。

我应该如何实现这一目标。我是否必须发送补丁请求或删除请求以及如何处理此问题。

我是tastypie的初学者。我用谷歌搜索了一段时间,我找不到合适的方法。请指导我如何完成此操作。

感谢。

1 个答案:

答案 0 :(得分:1)

我已经考虑了很多关于处理m2m关系的问题,因为我们的大部分应用程序都依赖于m2m链接。

我已经确定了update方法的方法。传入要更改的关系的所有引用(添加和删除),然后相应地更新数据库。我们只传入更改的值,因为如果您有分页列表,则只需要更新用户已识别的项目。通常我会在override_urls中使用自定义钩子。

我曾经有一个单独的添加和删除方法,在我们更改gui并允许用户只需更改复选框之前一直运行良好。在那种方法中,使用update方法更有用。您必须决定哪种方法最适合您的应用。