J'ai besoin d'exposer plusieurs modèles existants de Djangoau goût. J'ai maîtrisé les bases de la création de ModelResource et de son enregistrement dans urls.py. Cependant, j'aimerais éviter d'écrire des classes Resource pour chaque modèle django et, comme elles doivent toutes fonctionner de la même façon, j'aimerais que ce soit généralisé d'une manière ou d'une autre.
En gros, j’espère archiver avec un ensemble de modèles django classiques:
class ModelA:
field1 = ...
field2 = ...
class ModelB:
field3 = ...
field4 = ...
class ModelC:
field8 = ...
field9 = ...
Et ensuite, ils sont automatiquement exposés à l'API tastypie comme "/ api / v1 / modela /", "/ api / v1 / modelb /" et "/ api / v1 / modelc / etc.
Pas à la recherche d'une solution complète, juste des suggestions pour une bonne approche.
Réponses:
1 pour la réponse № 1UNE Resource
est "juste" une classe python afin que vous puissiez simplement créer une ressource de base et en hériter avec le seul queryset
et resource_name
Meta attributs définis.
Vous pouvez probablement aussi automatiser la dénomination en manipulant le Resource
classe "s __new__
méthode ou créer une coutume classmethod
, mais je ne suis pas sûr que l’effort vous rapportera beaucoup.
L'enregistrement des classes sur l'API peut être automatisé de nombreuses manières, l'une d'elles étant:
for name, obj in inspect.getmembers(sys.modules["resources"]):
if inspect.isclass(obj): # might want to add a few exclusions
v1_api.register(obj())
où "ressources" est le nom du module contenant les ressources, mais c'est un peu implicite.