我想在表中添加一列
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行添加一列会浪费资源。
还有另一种解决此类问题的最佳方法吗?
答案 0 :(得分:1)
如果您使用的是Django随附的Auth和Admin应用程序,那么如果您没有这些应用程序用来指示用户和管理员状态的列,则会破坏所有内容:“ is_active”,“ is_staff”和即使您使用Django Auth的自定义用户模型功能,您的自定义用户模型仍然需要具有这些布尔字段。因此,如果您使用的是这些应用,则最好使用它们提供的字段。
现在,如果您的“ is_admin”标志对Django Admin或Django Auth绝对没有意义,而仅对您自己的应用程序代码有意义,那么您可以将其作为一个简单的布尔列,也可以将其作为外键关系..例如您可以创建一个Administrators
模型,其中包含一个返回给User的ForeignKey字段。管理员表中的任何用户都是管理员。因此,您将不会使该字段混乱到您的User表。缺点是,每当您想知道用户是否是管理员时,都必须进行联接。如果您计划在站点上拥有数百万个用户,那么如果您拥有一个管理员,那可能是值得的几百甚至几千,也许不是...