1

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
4

1 に答える 1

1

Aは、複数の に属するManyToManyFieldことを許可します。あなたの仕様に基づいて、 aが適切です。UserCompanyForeignKey

于 2012-06-22T16:56:08.697 に答える