/ / Dynamicky vytvárať zdroje pre viacero django modelov v tastypie - python, django, tastypie

Dynamicky vytvorte zdroje pre viacero modelov django v chuti - python, django, tastypie

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ď č. 1

A 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 ..