我对tastypie资源中需要save_m2m的理解尚不清楚。在POST中,如果我发布的数据仅与创建一个模型有关,并且不发送与m2m对象相关的任何内容,我是否还需要执行save_m2m。为什么需要它?如果我覆盖save_m2m什么都不做,会发生什么?它似乎工作正常,我的资源被创建,我不确定这可能导致任何隐藏的影响。你能否评论一下。
答案 0 :(得分:3)
如果您没有标记为is_m2m=True
的任何字段,则该方法实际上不会执行任何操作。来自save_m2m中的tastypie docstrings:
"""
Handles the saving of related M2M data.
Due to the way Django works, the M2M data must be handled after the
main instance, which is why this isn't a part of the main ``save`` bits.
Currently slightly inefficient in that it will clear out the whole
relation and recreate the related data as needed.
"""
在tastypie的资源save_m2m
方法内部检查is_m2m设置为True的字段,如果没有找到它只是没有做任何事情,所以如果你的资源类没有任何m2m和任何其他资源赢了'从它继承,你可以覆盖save_m2m
方法什么也不做。
你实际上是tastypie之前的一个循环(一个小小的加速!哇!))。