python - 减少使用 ModelChoiceField 时对数据库的头痛
问题描述
请我需要您的帮助,如何在使用时减少数据库调用,ModelChoiceField
因为它需要 aqueryset
并且我必须单独使用它三次,该模型本身就是递归外键,代码如下:
init函数中的ModelForm代码
self.fields['category'] = forms.ModelChoiceField(queryset=queryset)
self.fields['super_category'] = forms.ModelChoiceField(queryset=)
self.fields['product_type'] = forms.ModelChoiceField(queryset=)
模型类:
class Category(ProjectBaseModel, AuditLogMixin):
parent_id = models.ForeignKey('self', related_name='children', blank=True, null=True, on_delete=models.CASCADE,verbose_name=_('Parent'))
我试图做的是在数组中收集所需类别的所有 id,并只用它们制作一个过滤器查询集,如下所示:
category = auction.category
super_category = category.parent_id
product_type = super_category.parent_id
ids= [category.id,super_category.id,product_type.id]
queryset = Category.objects.filter(id__in=ids)
如何继续该解决方案
解决方案
推荐阅读
- javascript - Node_Modules 文件夹在“npm install”后消失
- javascript - 我如何从 json 文件中提取我的数据,以便我可以将其放入内部 html?
- clickhouse - 如果右表已根据连接键排序,则部分合并连接行为
- javascript - 使用 socket.io 的 Javascript 聊天:我的代码不起作用,而老师的代码不起作用(看起来很相似)
- r - R / Tidyverse:面板数据在所有波中找到幸存的 ID
- python - 从 Confluence 获取 JSON 格式的表格
- python - Scipy 的 ivp 中的“无法解压不可迭代的浮点对象错误”
- bash - Bash if then 语句用于多个集群条件
- oracle - 如何在不使用 sqlplus 或 srvctl 的情况下在 oracle 中查找数据库名称?
- java - 供应商
通过透明代理请求