【问题标题】:Django ManyToMany Field in form - unnecessary database calls?表单中的 Django ManyToMany 字段 - 不必要的数据库调用?
【发布时间】:2012-03-09 22:20:29
【问题描述】:

在具有 manyToMany 字段的 django 表单中 - 当您添加新条目时,是否有数据库调用来检索列表中的每个对象?这是必要的/浪费的吗?

例如:

类 MyForm(ModelForm): 喜欢 = forms.ModelMultipleChoiceField(queryset=Videos.objects.all())

....

提交表单时附有项目 ID 列表。在 clean() 方法中,likes 变成了 Video 对象的列表。但是你可以这样做:

self.instance.likes.add() ...无需获取对象。

...

在更新关系之前先检索对象是否浪费?如果不是,为什么?

【问题讨论】:

    标签: django django-models django-forms django-orm


    【解决方案1】:

    我会说每次保存表单时,它都会评估您传递给它的查询集,以检查每个 ID 是否在该查询集中。如果您希望优化行为,请尝试继承 ModelMultipleChoiceField 并删除检查/使它们更精简。

    【讨论】:

      猜你喜欢
      • 2020-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-26
      • 2020-10-08
      • 2017-07-11
      • 2010-12-07
      相关资源
      最近更新 更多