【问题标题】:Django - does model need own table if it inherits solely to change the manager?Django - 如果模型仅继承以更改管理器,它是否需要自己的表?
【发布时间】:2014-03-24 14:03:39
【问题描述】:

我读过这个thread,它处理了让 Django cmets 在“user”字段上使用 select_related() 从而减少不必要的 sql 查询的问题。

我最喜欢的建议是创建自己的评论模型并覆盖当前使用的管理器。

这就是我所拥有的:

#models.py
class LightCommentManager(CommentManager):
    def get_query_set(self):
        qs = (super(CommentManager, self).get_query_set().select_related('user'))
        return qs

class LightComment(Comment):
    objects = LightCommentManager()
    class meta:
        managed = False

这一切都很好,但是当我同步数据库时,Django 仍然为 LightComment 创建一个表。如果我要更改的只是经理,我真的需要这张表吗?如果 managed 设置为 false,为什么 Django 会创建它?

提前致谢,

【问题讨论】:

    标签: django django-models django-inheritance


    【解决方案1】:

    首先,您的内部类应称为Meta,而不是meta

    但不是managed = False,您应该使用proxy = True 来表示您正在创建一个代理模型而不是另一个真实模型。

    【讨论】:

      猜你喜欢
      • 2011-11-14
      • 1970-01-01
      • 2018-06-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多