1

我正在尝试通过像这样继承自定义模型来扩展用户模型:

class Profile(User):
   ...

我想将我的自定义字段添加到用户模型,但 django nonrel 失败并出现错误:

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

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

4

3 回答 3

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)
    ...
    ...
于 2011-04-07T18:35:20.677 回答
1

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

应用引擎中的建模

appengine 中的日常教授建模

于 2011-04-07T11:30:26.080 回答
1

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

本文解释了如何改为从 User 继承。

简要步骤:

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

还没试过。

于 2011-09-18T00:48:07.973 回答