Company モデルと Profile モデルを作成しました。
各ユーザーは 1 つの会社に属し、会社は複数のユーザーに属することができます。
それをモデル化する正しい方法は 2 つのうちどれですか?
class Company(models.Model):
company_name = models.CharField(max_length=50)
company_code = models.CharField(max_length=40)
company_email = models.EmailField()
def save(self, *args, **kwargs):
if not self.company_code:
self.company_code = uuid.uuid1()
super(Company, self).save(*args, **kwargs)
UserProfile は次のように定義されます。
class UserProfile(models.Model):
# This field is required.
user = models.OneToOneField(User)
# Other fields here
company = models.ManyToManyField(Company)
# !!!! OR !!!!
company = models.ForeignKey(Company)
アップデート:
class UserProfile(models.Model):
user = models.OneToOneField(User)
company = models.ForeignKey(Company)
def create_user_profile(self, instance, created, **kwargs):
if created:
UserProfile.objects.create(user=instance)
post_save.connect(create_user_profile, sender=User)
このビットを UserProfile クラスに追加AUTH_PROFILE_MODULE = 'MyApp.UserProfile'
し、設定にも追加しました。
syncdb を実行すると、次のエラー メッセージが表示されます。
>> company = models.ForeignKey(Company)
NameError: name 'Company' is not defined