"个人.用户“必须是“用户”实例

2024-05-14 04:30:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个小数据迁移,为没有UserProfiles的现有Django用户创建UserProfiles。在

def forwards(self, orm):
    "Write your forwards methods here."
    for user in User.objects.all():
        try:
            person = user.get_profile()
        except:
            newperson = orm.Person(user=user)
            newperson.save()

但我总是

^{pr2}$

我做错什么了?在


Tags: 数据django用户selfforyourheredef
1条回答
网友
1楼 · 发布于 2024-05-14 04:30:33

在South编写迁移时,不必直接使用models类,而是使用冻结的类。在上面的例子中,您可能试图将当前的用户对象分配给冻结的个人对象。冻结的对象需要冻结的用户对象。在

您需要重写如下:

def forwards(self, orm):
    "Write your forwards methods here."
    for user in orm['auth.User'].objects.all():
        try:
            # cannot use user.get_profile() because it is not available in the frozen model
            person = orm.Person.get(user=user)  
        except:
            newperson = orm.Person(user=user)
            newperson.save()

http://south.readthedocs.org/en/latest/ormfreezing.html#accessing-the-orm

顺便说一句,我建议你不要使用一个“除了”之外的“裸”,而是“”,除非有一些异常,这样更健壮。在

相关问题 更多 >