8
votes

Puis-je désactiver un champ dans la vue de navigation API de l'API de repos

J'utilise le cadre de repos Django pour sérialiser un modèle dans lequel j'ai une fourchette élégante.

modèles.py xxx

sériializers.py xxx

Je veux vous débarrasser du "formulaire HTML" au bas de la vue API de navigabilité depuis que je reçois une liste avec tout mon Les articles et les récupérer de la DB prend des âges (j'ai quelques articles 100 000, et chaque fois que le formulaire HTML est affiché, mon serveur fait des requêtes de 100k).

J'ai lu la réponse de Comment désactiver le style d'administration navigable Interface de Django-Rest-framework? et je présente actuellement la vue à Json. Cependant, j'aime la vue HTML et souhaite trouver un moyen d'éviter le formulaire HTML disponible en bas.

Je ne veux pas supprimer correctement le champ de la vue (j'ai besoin de l'utiliser ), mais simplement supprimer les requêtes de la base de données utilisées pour remplir le formulaire.

aucune idée?


0 commentaires

3 Réponses :


4
votes

Je réponds ma propre question. J'ai trouvé dans le Documentation la solution à mon problème. J'ai dû utiliser l'attribut lis_only .

sériializers.py xxx


1 commentaires

Vous pouvez également définir vos champs de la méta-classe (voir Docs )



6
votes

Faire le champ en lecture seule signifie que vous ne pouvez pas la modifier, ce qui n'est probablement pas recherché dans tous les cas.

Une autre solution consiste à remplacer le BrowSableapiRenderer code> afin qu'il ne puisse pas afficher le code HTML forme (qui peut être vraiment vraiment lent avec beaucoup de données). p>

Ceci est étonnamment facile, il suffit de remplacer get_rendered_html_form code>: p> xxx pré>

Ajustez ensuite vos paramètres pour utiliser ce rendu: P>

REST_FRAMEWORK = {
    'DEFAULT_RENDERER_CLASSES': (
        'rest_framework.renderers.JSONRenderer',
        'myapp.renderers.NoHTMLFormBrowsableAPIRenderer',
    )
}


0 commentaires

0
votes

@maerteijn Réponse Désactivera toutes les formulaires: Publier, mettre, mettre, supprimer et options.

Si vous souhaitez toujours autoriser le bouton "Options" génial, vous pouvez faire quelque chose comme celui-ci xxx < / pré>

et modifier les paramètres.py de la même manière xxx


0 commentaires