1

複数の既存の django モデルを Tastypie に公開する必要があります。af ModelResource を作成し、それを urls.py に登録することで基本をカバーしました。ただし、すべての django モデルの Resource クラスを作成することは避けたいと思います。それらはすべて同じように動作する必要があるため、何らかの方法で一般化したいと考えています。

したがって、基本的にアーカイブしたいのは、通常の django モデルのセットです。

class ModelA:
  field1 = ...
  field2 = ...

class ModelB:
  field3 = ...
  field4 = ...

class ModelC:
  field8 = ...
  field9 = ...

そして、自動的に「/api/v1/modela/」、「/api/v1/modelb/」、「/api/v1/modelc/」などとして、tastypie API に公開されます。

完全な解決策を探しているのではなく、これに対する適切なアプローチの提案にすぎません。

4

2 に答える 2

1

AResourceは '単なる' python クラスであるため、単純にベース リソースを作成し、定義されたquerysetおよびresource_nameMeta 属性のみを使用して継承できます。

Resourceクラスの__new__メソッドをいじったり、カスタムを作成したりすることで、おそらく名前付けも自動化できますがclassmethod、その努力があなたに多くの利益をもたらすかどうかはわかりません.

API へのクラスの登録は、さまざまな方法で自動化できます。そのうちの 1 つを次に示します。

for name, obj in inspect.getmembers(sys.modules['resources']):
    if inspect.isclass(obj):  # might want to add a few exclusions
        v1_api.register(obj())

ここで、「resources」はリソースを含むモジュールの名前ですが、これは一種の暗黙的なものです..

于 2013-05-02T09:59:16.150 に答える