GAE Django nonrel扩展用户模型

时间:2011-04-07 09:10:09

标签: google-app-engine django-nonrel

我正在尝试使用我的自定义模型扩展用户模型,方法是继承它:

class Profile(User):
   ...

我想将自定义字段添加到User模型,但django nonrel失败并显示错误:

DatabaseError: Multi-table inheritance is not supported by non-relational DBs.

那我怎么解决这个问题呢?我绝对需要用户模型中的自定义字段。

3 个答案:

答案 0 :(得分:2)

您应该创建另一个包含其他字段并通过一对一关系将其绑定到User模型的类,而不是覆盖User模型。

from django.contrib.auth.models import User

class UserProfile(models.Model):
    user = models.ForeignKey(User, unique=True)
    nickname = models.CharField(max_length=50)
    ...
    ...

答案 1 :(得分:1)

你不能在google-app-engine中做类似的事情。如果你想在你的模型中建立关系。您应该以这样的方式对您的模型进行denormailse,以便以appengine的方式实现相同的目标。要了解有关appengine建模的更多信息。您可以浏览以下链接。

modeling in appengine

Daily profeth modeling in appengine

答案 2 :(得分:1)

我希望request.user对象是普通的User对象,但是添加了字段。接受的答案不允许这样做,因为UserProfile有一个成员“user”而不是用户。

This article解释了如何从用户继承。

简述步骤:

  • 使CustomUser继承自用户
  • 设置自定义身份验证后端以返回CustomUser

尚未尝试过。