【发布时间】:2019-04-03 01:30:07
【问题描述】:
我正在制作一个经典的单视图应用程序,映射多个 数据源。
Django-admin 是分页的,所以当我查看我的列表时没有影响,问题是当我想更改/添加它时。
使用调试工具栏,我的查询看起来不错,我认为它们不会花费很长时间。
我尝试在这里使用建议 Django admin change form load quite slow 并创建了一个表单,但这没有任何影响。
什么时候使用exclude = ['e_vehicle','e_product'],添加/更改屏幕会立即加载也就不足为奇了。
大家有什么意见
model.py
class Product_Mapping(Trackable):
product_mapping_id = models.AutoField(primary_key=True)
s_product = models.OneToOneField(sProduct, on_delete=models.CASCADE)
e_fund_manager = models.ForeignKey(eManager, models.DO_NOTHING, blank=True, null=True)
e_product = models.ForeignKey(eProduct, models.DO_NOTHING, blank=True, null=True)
e_vehicle = models.ForeignKey(eVehicle, models.DO_NOTHING, blank=True, null=True)
eManager 大约有 3K
eProduct 大约有 17K(具有 eManager 的 fkey)
eVehicle 大约有 25K(具有 eProduct 的 fkey)
form.py
class MappingProductForm(forms.ModelForm):
s_product = forms.ChoiceField(required=False,
choices=sProduct.objects.values_list('final_publications_product_id', 'product_name'))
e_fund_manager = forms.ChoiceField(required=False,
choices=eManager.objects.values_list('e_fund_manager_id', 'manager_name'))
e_product = forms.ChoiceField(required=False,
choices=eProduct.objects.values_list('e_product_id', 'product_name'))
e_vehicle = forms.ChoiceField(required=False,
choices=eVehicle.objects.values_list('e_vehicle_id', 'formal_vehicle_name'))
class Meta:
model = Product_Mapping
fields = '__all__'
admin.py
@admin.register(Product_Mapping)
class ChampProductMappingAdmin(admin.ModelAdmin):
form = MappingProductForm
【问题讨论】:
-
你有没有尝试使用
raw_id_fields作为这两个外键?
标签: python django django-forms