我正在试图弄清楚如何处理这种情况,其中我的用户类(扩展AbstractUser)包含另一个对象的外键。例如,
Class Store(models.Model):
#attributes
Class Employee(AbstractUser):
store = models.ForeignKey('Store')
#other attributes
当我运行syncdb时,我收到错误:
django.db.utils.IntegrityError: (1048, "Column 'store_id' cannot be null")
我相信我收到此错误是因为它试图在syncdb脚本中创建一个也是员工的超级用户,而employee / superuser不能有null store_id。
如果这是真的,那么如何改变这一点,以便1)超级用户不是“员工”,或2)我仍然可以创建一个没有此错误的超级用户员工?提前谢谢。
编辑:我还想保持每个员工都必须有商店,并避免设置null = true&模型定义中的blank = true。
答案 0 :(得分:0)
您可以重写create_user和create_superuser命令,例如:
from django.contrib.auth.models import BaseUserManager
class EmployeeManager(BaseUserManager):
def create_user(self, email, password=None, **kwargs):
user = self.model(email=email, **kwargs)
user.set_password(password)
user.store = default_user_store
user.save()
return user
def create_superuser(self, email, password, **kwargs):
user = self.model(
email=email, is_staff=True, is_superuser=True, **kwargs)
user.set_password(password)
user.store = default_superuser_store
user.save()
return user
并将objects = EmployeeManager()
添加到您的Employee
模型