我想向表格添加一列,例如
class User(models.Model):
name = models.CharField(max_length=255)
phone = models.CharField(max_length=255)
birthday = models.DateField(null=True, blank=True)
现在我想添加
is_admin = models.BooleanField(default=False)
但只有 3 位管理员,因此 99% 的列值为 False
我认为仅仅为 3 行添加一列是浪费资源。
还有其他最好的方法来处理此类问题吗?
最佳答案
如果您使用 Django 附带的身份验证和管理应用程序,如果您没有这些应用程序用来指示用户和管理员状态的列:“is_active”、“is_staff”和“is_superuser”.. 即使您使用 Django Auth 的自定义用户模型功能,您的自定义用户模型仍然需要具有这些 bool 字段。因此,如果您正在使用这些应用程序,您不妨使用它们提供的字段。
现在,如果您的“is_admin”标志对 Django Admin 或 Django Auth 毫无意义,而仅对您自己的应用程序代码有意义,那么您可以将其作为简单的 bool 列,或者可以将其作为外键关系..例如您可以创建一个 Administrators
模型,其中包含返回给 User 的foreignKey 字段。管理员表中的任何用户都是管理员。因此您不会让该字段弄乱您的用户表。缺点是,每次您想知道用户是否是管理员时,您都必须进行加入...如果您计划在您的网站上拥有数百万用户,那么如果您有几百甚至几千,也许不是......
关于mysql - Django,当 99% 的列是默认值时,向表添加列的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54880082/