Musím odhaliť viac existujúcich modelov djangopodľa chuti. Základy som získal pri vytváraní modelu ModelResource a jeho registrácii na adrese urls.py. Chcel by som sa však vyhnúť písaniu tried zdrojov pre každý model django a keďže všetky musia pracovať rovnakým spôsobom, chcel by som ho nejakým spôsobom zovšeobecniť.
Takže v podstate dúfam, že archivujem so súborom bežných django modelov:
class ModelA:
field1 = ...
field2 = ...
class ModelB:
field3 = ...
field4 = ...
class ModelC:
field8 = ...
field9 = ...
A potom ich automaticky nechajú vystaviť rozhraniu tastypie API ako „/ api / v1 / modela /“, „/ api / v1 / modelb /“ a „/ api / v1 / modelc / atď.“.
Nehľadáme kompletné riešenie, iba návrhy na dobrý prístup k tomu.
odpovede:
1 pre odpoveď č. 1A Resource
je "iba" trieda python, takže môžete jednoducho vytvoriť základný prostriedok a zdediť ho iba pomocou queryset
a resource_name
Definované atribúty meta.
Pravdepodobne by ste mohli automatizovať pomenovávanie aj pomocou hry Resource
trieda "s __new__
alebo vytvorte vlastný classmethod
, ale nie som si istý, či vám toto úsilie prinesie veľa.
Registrácia tried do api môže byť automatizovaná mnohými spôsobmi, z ktorých jeden môže byť:
for name, obj in inspect.getmembers(sys.modules["resources"]):
if inspect.isclass(obj): # might want to add a few exclusions
v1_api.register(obj())
kde "resources" je názov modulu, ktorý obsahuje zdroje, ale je to druh implicitného ..