1

ここでの回答の指示に従おうとしましたが、うまくいきませんでした。次の理由によると思います。

  1. 既存の User クラスは、プロキシである 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 モデルには、組み込みの User テーブルとの 1 対 1 があります。

    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)
        ...
    

ご想像のとおり、コードの一部はプロキシ クラスを参照しています。

このシナリオで、誰かが上記の答えのバリエーションを提案できますか? Meta/proxy 属性を削除するだけで満足できますか? UserProfile 関係はどうなりますか? そのデータを回復して新しいユーザーモデルに入れるために、更新の過程でそれを失いたくありません(新しいDjango 1.5で許可されているように)

更新 1

私はいくらか進歩したと思います。私もこれを読んで、次のことを行いました。

  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'.
    

そのため、グループと権限に関連する組み込みテーブルに問題があるようです。何か案は?

4

0 に答える 0