1

我创建了一个公司模型和一个配置文件模型。

每个用户属于一个公司,一个公司可以属于多个用户。

两者中哪一个是正确的建模方式?

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

AManyToManyField将允许 aUser属于多个Companys。根据您的规格,aForeignKey将是合适的。

于 2012-06-22T16:56:08.697 回答