首页 > 解决方案 > 减少使用 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)

如何继续该解决方案

标签: pythondjangodjango-formsmodelform

解决方案


推荐阅读