我有一个添加移动应用条目的模型:
class MobileApp(models.Model):
name = models.CharField(max_length=255)
description = models.TextField()
images = models.ManyToManyField(Image, blank=True)
在Django Admin中,我要做的是过滤列表中列出的图像,以防止django加载该表中的所有图像,这些图像非常多。
所以我目前做的是以下内容:
class MobileAppAdmin(admin.ModelAdmin):
def get_form(self, request, obj=None, **kwargs):
form = super(MobileAppAdmin, self).get_form(request, obj, **kwargs)
if obj:
form.base_fields['images'].queryset = Image.objects.filter(pk__in=obj.images.all())
else:
form.base_fields['images'].queryset = Image.objects.filter(pk=0)
return form
但是在提交表单时,添加新图像会发生以下情况:
Select a valid choice. XYZ is not one of the available choices.
在图像字段上。
我怎样才能做到这一点?我有很多字段需要相同的移动,因为django不断加载所有记录以填充关系列表。
由于
答案 0 :(得分:2)
在提交表单时不要限制选项。
class MobileAppAdmin(admin.ModelAdmin):
def get_form(self, request, obj=None, **kwargs):
form = super(MobileAppAdmin, self).get_form(request, obj, **kwargs)
if request.method == 'GET':
if obj:
form.base_fields['images'].queryset = Image.objects.filter(pk__in=obj.images.all())
else:
form.base_fields['images'].queryset = Image.objects.filter(pk=0)
return form