1

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が行われている!? 代わりに「ラッパー」クラスを要求しているときに、モデル クラスを取得するのはなぜですか?
もちろん、これはモデルのすべてのプロパティを保持しますが、明らかにラッパーで定義されたすべてのメソッドを欠いています。
私にとってはまったくナンセンスなので、これで私を助けてくれることを願っています。ご協力ありがとうございました。

4

1 に答える 1

2

ドキュメントの少し下に「プロキシ モデル」があります。それらはあなたが望むようにします。

于 2012-08-18T14:32:03.213 に答える