1

get_non_open_deals()フォームとビューの両方で使用されるビジネスロジックを含む関数があります。

class CallsForm(ModelForm):       

    def __init__(self, company, *args, **kwargs):
        super(CallsForm, self).__init__(*args, **kwargs)                                        
        self.fields['deal_1'].queryset = self.get_non_open_deals(self.instance, company)        

私は今それをとformsの両方で複製していviewsます。両方がアクセスできるように1か所で定義する方法があるかどうか疑問に思いました。

4

1 に答える 1

4

使用するコードサンプルがなければ、表示するのは困難ですが、これはモデルのメソッドである必要があるようです。これが複数のモデルで機能する必要がある場合は、おそらくミックスインまたは抽象基本クラスが適切です。

class SomeModel(models.Model):
    def get_non_open_deals(self, company):
        # business logic here

class CallsForm(ModelForm):
    def __init__(self, company, *args, **kwargs):
        super(CallsForm, self).__init__(*args, **kwargs)                                        
        self.fields['deal_1'].queryset = self.instance.get_non_open_deals(company)

少なくとも、models.pyモジュール内の関数にすることができます。

于 2012-07-28T19:56:54.497 に答える