擅长:python、mysql、java
<p>您可以在<code>User</code>模型中创建方法,也可以创建一个新类作为所有方法的存储。每个方法将根据相应用户设置的值为您提供相关的filterset类</p>
<p>比如:</p>
<pre><code>class UserFilterset:
def __init__(self, request):
self.request = request
def get_property_filterset(self):
if not get_user_setting('filter_by_tenants', request=self.request)['value']:
return PropertyFilterWithoutTenant
return PropertyFilter
... # add more such methods for each user setting
</code></pre>
<p>现在可以使用此方法获取相关的filterset类</p>
<pre><code>class PropertyListView(LoginRequiredMixin, FilterView):
template_name = 'app/property_list.html'
context_object_name = 'properties'
def get_filterset_class(self):
return UserFilterset(self.request).get_property_filterset()
</code></pre>
<p>因此,即使将来您想要添加更多的逻辑,您也可以只更新相关的方法,这样会更干净、更易于管理</p>