擅长:python、mysql、java
<p>这里不需要元编程或任何特别聪明的东西。你只需要提取变化的部分。在本例中,它只是<code>filter</code>的参数:可以使用字典形式的参数传递,并将过滤器作为字符串存储在类属性中。在</p>
<pre><code>class AbstractManager(models.Manager):
def get_queryset(self, user):
if user.is_superuser:
return super(AbstractManager, self).get_queryset()
return super(AbstractManager, self).get_queryset().filter(**{self.filter: user})
class OwnCompanyManager(AbstractManager):
filter = "companyuser__user"
class OwnPublisherManager(AbstractManager):
filter = "company__companyuser__user"
</code></pre>