3

我有一个添加移动应用条目的模型:

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 相同的移动,因为 django 不断加载所有记录以填充关系列表。

谢谢

4

1 回答 1

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
于 2013-10-25T20:52:27.190 回答