我正在使用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的初学者。我用谷歌搜索了一段时间,我找不到合适的方法。请指导我如何完成此操作。
感谢。
答案 0 :(得分:1)
我已经考虑了很多关于处理m2m关系的问题,因为我们的大部分应用程序都依赖于m2m链接。
我已经确定了update
方法的方法。传入要更改的关系的所有引用(添加和删除),然后相应地更新数据库。我们只传入更改的值,因为如果您有分页列表,则只需要更新用户已识别的项目。通常我会在override_urls
中使用自定义钩子。
我曾经有一个单独的添加和删除方法,在我们更改gui并允许用户只需更改复选框之前一直运行良好。在那种方法中,使用update
方法更有用。您必须决定哪种方法最适合您的应用。