0
我在User
模型上有一個ForeignKey
字段。Django應該使用可選的相關字段還是get_or_create?
company = models.ForeignKey('crm.Company')
所以每個用戶都需要有一個公司。
的問題是create_super_user
方法不具有company
在項目開始時,我得到了以下錯誤:
django.db.utils.OperationalError: (1054, "Unknown column 'users_user.company_id' in 'field list'")
所以會是最好只創建一個默認Company
,併爲它分配get_or_create
喜歡:當我從命令行創建一個新的超級用戶可能出現
def create_superuser(self, email, password, **kwargs):
company, created = Company.objects.get_or_create(
name='Default Company',
)
kwargs.setdefault('company', company)
kwargs.setdefault('is_staff', True)
kwargs.setdefault('is_superuser', True)
kwargs.setdefault('is_active', True)
if kwargs.get('is_staff') is not True:
raise ValueError('Superuser must have staff=True')
if kwargs.get('is_superuser') is not True:
raise ValueError('Superuser must have is_superuser=True')
return self.create_user(email, password, **kwargs)
的問題和Default company
已經改變。現在將創建一個新的Default Company
。
另一方面,我可以使company
字段爲可選null=True
,但現在打破了每個用戶與公司關聯的系統規則。
我還能如何確保公司已經創建?