Django プロジェクト用のサーバー側 API を開発しようとしていますが、models.py ファイルのすべてのモデル宣言で定義されたメソッドがたくさんあります。そこで、API メソッドを処理するための一種の Façade クラスを作成し、モデルにはそのプロパティのみを残すことを考えました。
私はこの構造を持っていました:
# models.py
class MyModel(models.Model):
prop1 = ...
prop2 = ...
def f1(self):
pass
def f2(self):
pass
今私はこれを持っていますが:
# models.py
class MyModel(models.Model):
prop1 = ...
prop2 = ...
# wrappers.py
from myapp import models
class MyModel(models.MyModel):
def f1(self):
pass
def f2(self):
pass
書き留めている間、これは非常に興味深いものでした。これにより、機能の定義をどれも失うことなく分離することができたからです。しかし、新しいデータ モデルをテストしようとしたとき、私は非常に混乱しました。
$ python manage.py shell
Python 2.7.3 (default, Apr 20 2012, 22:44:07)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from myapp.wrappers import MyModel
>>> MyModel
<class 'MyProject.myapp.models.MyModel'>
ここでWTFが行われている!? 代わりに「ラッパー」クラスを要求しているときに、モデル クラスを取得するのはなぜですか?
もちろん、これはモデルのすべてのプロパティを保持しますが、明らかにラッパーで定義されたすべてのメソッドを欠いています。
私にとってはまったくナンセンスなので、これで私を助けてくれることを願っています。ご協力ありがとうございました。