2013-10-25 116 views
3

我有一個模型,用於將移動應用的條目之一:選擇一個有效的選擇。 XYZ不是可用的選項

class MobileApp(models.Model): 
    name = models.CharField(max_length=255) 
    description = models.TextField() 
    images = models.ManyToManyField(Image, blank=True) 

在Django管理,我所試圖做的是篩選在列表中,以防止列出的圖像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不斷加載所有記錄來填充關係列表。

謝謝

回答

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 
相關問題