Оптимизация запроса ModelChoiceField в django Admin (AppEngine) - PullRequest
0 голосов
/ 21 января 2010

У меня есть две модели: активность и место. Модель Activity имеет свойство ReferenceProperty для модели Place.

Это работало нормально, пока таблица Place не начала расти и теперь при попытке редактировать активность через администратора django я получаю ошибку памяти от Google (это не произойдет, если я удалю это поле из Активности наборы полей администратора)

Виджет, используемый для редактирования RefrenceProperty, использует Place.all () для получения возможные значения. Поскольку и Activity, и Place защищены городским имуществом, я бы хотел оптимизировать запрос выбора виджета из Place.all (), чтобы просто соответствующие места, например Place.all (). filter ("city =",)

Я не смог найти способ переопределить запрос в документации, и я был интересно, возможно ли вышеизложенное? и если да, то как?

1 Ответ

0 голосов
/ 22 января 2010

Удалось оптимизировать запрос путем переопределения формы администратора:

class ActivityAdminForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(ActivityAdminForm, self).__init__(*args, **kwargs)        
        self.fields['place'].queryset = <... my query ...>


class ActivityAdmin(admin.ModelAdmin):
    form = ActivityAdminForm
...