ここでの回答の指示に従おうとしましたが、うまくいきませんでした。次の理由によると思います。
既存の 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
UserProfile モデルには、組み込みの User テーブルとの 1 対 1 があります。
import django.contrib.auth.models as auth_models class UserProfile(models.Model): user = models.OneToOneField(auth_models.User) ...
ただし、他のモデルはプロキシ クラスを使用します。
class Job(models.Model): ... user = models.ForeignKey(User) ...
ご想像のとおり、コードの一部はプロキシ クラスを参照しています。
このシナリオで、誰かが上記の答えのバリエーションを提案できますか? Meta/proxy 属性を削除するだけで満足できますか? UserProfile 関係はどうなりますか? そのデータを回復して新しいユーザーモデルに入れるために、更新の過程でそれを失いたくありません(新しいDjango 1.5で許可されているように)
更新 1
私はいくらか進歩したと思います。私もこれを読んで、次のことを行いました。
Job の auth_models.User のプロキシへの参照を変更しました。アプリは引き続き動作します。プロキシは外部キーに対して透過的です。
次に、ユーザーのプロキシ メタを削除し、前述の質問への回答のように移行を生成しました。今、私はこのエラーレポートを取得しています:
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'.
そのため、グループと権限に関連する組み込みテーブルに問題があるようです。何か案は?