2011-08-27 8 views
1

J'ai forme:Comment améliorer les performances des formulaires?

class AdmItemForm(forms.ModelForm): 
    id = forms.ModelChoiceField(queryset=Article.objects.all(), widget=forms.HiddenInput()) 
    mainimage = forms.ImageField(widget=AdmImageWidget(), required=False) 
    tags = TagField(required=False) 
    ..... 

class Meta: 
    model = Article 
    fields = ('id', 'category', 'date', ....) 

mais ... Dans le tableau des articles est de 10 000 dossiers ... formulaire n'est pas ouvert, navigateur charge données pour toujours.

Que se passe-t-il? Le ModelChoiceField récupère-t-il toutes les données d'une table?

Comment le réparer?

Répondre

2

Si vous avez 10 000 enregistrements appartenant à votre modèle Article, le jeu de requête que vous passez à ModelChoiceField indique qu'il contient 10 000 éléments.

La solution simple est de restreindre ce jeu de requête pour qu'il ne contienne que ce dont vous avez réellement besoin: le formulaire doit-il contenir tous les articles?

Longue histoire courte, voir si vous pouvez restreindre la requête de quelque façon, i.e. .:

id = forms.ModelChoiceField(queryset=Article.objects.\ 
    filter(published=True)) 
Questions connexes