2017-11-04 5 views
2

私のmodels.pyには、2つのクラスと2つのマネージャクラスがあります。
モデルで使用されている一般的なメソッドではありますが、必ずしもその一部である必要はありません。例えばmodels.py内の関数は、クラスの外部に存在するはずですか?

def profile_photo_upload_loc(instance, filename): 
     return "profile_photo/%s/%s" % (instance.user, filename) 

class Profile(models.Model): 
    profile_photo = models.ImageField(
     upload_to=profile_photo_upload_loc, 
     null=True, 
     blank=True, 
     width_field='width_field', 
     height_field='height_field', 
     verbose_name='Profile Image', 
    ) 

は、それがモデルファイル内のクラスの外でスタンドアロン機能を持っていても大丈夫ですか?それはいつ適切なのですか?また、その機能はいつクラス内にあるべきですか?あなたが書かれている機能は、他のモデル画像のアップロードに使用することができるように

答えて

4

スタンドアロン機能はモデルクラスの内側に書かれているものはどれあり、

機能複数のモデルで使用することができ、それらの機能ですあなたは他のモデルのインスタンスを持つ関数を使用しようと

が、それは誤り

2

ジャンゴとPython、一般的にを与える、そのモデルのインスタンスではなく、他のモデルでのみ使用することができ、はるかに許容していますこの種のリベラルなアプローチ。

私自身は、それに関係するモデルのメソッドを保持することを好みます。 「この人の年齢は?」のようにあなたは彼の誕生日とカウントを取る。そのように単純ですが、よりJavaに近いアプローチを使用して、すべてのメソッドやその他のビジネスルールとロジックをサービスに保つことができます。 Javaプロジェクトをエミュレートするのが最善だと私は思うが、Pythonプロジェクトを扱うときには大きくなるかもしれないが、ほとんどのスクリプトは自己完結型で、良いAPIと通信している。

また、私はcanceled()メソッドを呼び出すときに余分な1つのLを書いたことをPythonが知らせないので、またはメソッドが引き続き実行される別のファイルのクラスの中にまだ存在しているので、関数とパラメータを参照してください。

関連する問題