在django 1.5中将user和userprofile迁移到新用户

时间:2013-05-22 10:33:32

标签: django model migration

我尝试按照回答here中的说明操作,但没有奏效。我打赌由于以下原因:

  1. 我们现有的用户类是models.py,它是代理

    class User(auth_models.User):
    """
        Wrapper to make methods on user_profile one call
    """
    objects = UserManager()
    def title(self):
        # TODO This probably makes too many SQL queries by default?
        return self.get_profile().title
    
    class Meta:
        proxy = True
    
  2. UserProfile模型与内置用户表一对一:

    import django.contrib.auth.models as auth_models 
    
    class UserProfile(models.Model):
        user = models.OneToOneField(auth_models.User) ...
    
  3. 但其他模型使用代理类:

    class Job(models.Model):
        ...
        user = models.ForeignKey(User)
        ...
    
  4. 可以想象,代码的某些部分引用了代理类。

    在这种情况下,有人可以建议对上述答案进行修改吗?我可以删除Meta /代理属性并感到高兴吗? UserProfile关系会发生什么?我不想在更新过程中丢失它,以便恢复数据并将其放入新的用户模型中(如新的Django 1.5允许)

    更新1

    我认为,我取得了一些进展。我还阅读this并做了以下事情:

    1. 我在Job中为auth_models.User更改了对代理的引用。该应用程序继续工作:代理对外键是透明的,很好。

    2. 然后,我删除了用户中的代理元,并在回答上述问题时生成了迁移。现在我收到此错误报告:

      CommandError: One or more models did not validate:
      auth.user: Accessor for m2m field 'groups' clashes with related m2m field     'Group.user_set'. Add a related_name argument to the definition for 'groups'.
      auth.user: Accessor for m2m field 'user_permissions' clashes with related m2m field 'Permission.user_set'. Add a related_name argument to the definition for 'user_permissions'.
      tao.user: Accessor for m2m field 'groups' clashes with related m2m field 'Group.user_set'. Add a related_name argument to the definition for 'groups'.
      tao.user: Accessor for m2m field 'user_permissions' clashes with related m2m field 'Permission.user_set'. Add a related_name argument to the definition for 'user_permissions'.
      
    3. 因此,在我看来,组和权限的相关内置表存在问题。有什么想法吗?

0 个答案:

没有答案