2011-04-07 20 views
1

我想用我的自定義模型擴展用戶模型:GAE的Django nonrel從它繼承這樣的擴展用戶模型

class Profile(User): 
    ... 

我想我的自定義字段添加到用戶模式,但Django的nonrel失敗與錯誤:

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

所以,我怎樣才能解決這個問題?我絕對需要用戶模型中的自定義字段。

回答

2

而不是覆蓋用戶模型,你應該創建包含附加字段另一個類,並通過1對1的關係綁定到用戶模型。

from django.contrib.auth.models import User 

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

你不能在google-app-engine中這樣做。如果你想在你的模型中有關係。你應該以這樣一種方式取消你的模型,使得appengine的方式可以達到同樣的效果。要了解更多關於appengine建模的知識。你可以通過以下鏈接。

modeling in appengine

Daily profeth modeling in appengine

+0

好的,謝謝你,但你的答案與普通的GAE方式有關,而不是django-nonrel – dragoon 2011-04-07 13:27:43

1

我想request.user對象是普通的用戶對象,但添加了字段。接受的答案不允許這樣做,因爲UserProfile具有成員「用戶」而不是用戶。

This article解釋瞭如何從用戶繼承。

在簡短的步驟:

  • 讓CustomUser從用戶
  • 設置自定義認證後端返回CustomUser

有沒有試過繼承。

+2

在django-nonrel中,你只能從抽象類繼承模型(這是因爲如果你在Django中繼承模型,創建並連接JOIN,你顯然不能在django-nonrel中做) – LXj 2011-12-28 13:09:40