擅长:python、mysql、java
<p>您可以添加一个额外的BooleanField<code>is_ghost</code>,并覆盖原始模型和代理模型上的默认管理器:</p>
<pre><code>class PostManager(models.Manager):
def get_querset(self):
return super(PostManager, self).get_queryset().filter(is_ghost=False)
class Post(models.Model):
...
is_ghost = models.BooleanField(blank=True, default=False)
objects = PostManager()
class GhostPostManager(models.Manager):
def get_queryset(self):
return super(GhostPostManager, self).get_queryset().filter(is_ghost=True)
class GhostPost(Post):
objects = GhostPostManager()
Meta:
proxy = True
</code></pre>
<p>这将把所有内容保存在一个表中,但是管理器和查询集的行为将像是两个单独的模型/表。在</p>
<p>另一个解决方案是为两个模型使用一个抽象基类。如果您不更改原始<code>Post</code>模型的类名,并从例如<code>AbstractPost</code>继承,我认为这不会引起任何问题。在</p>