我對Django很新穎,到目前爲止,我有一個非常基本的設置,我將一個額外的模型附加到來自(django.contrib.auth.models)的默認用戶模型。在我的accounts.models.py我有一些行:Django所有權用戶或用戶擴展的外鍵
class UserExtension(models.Model):
user = models.OneToOneField(User, primary_key=True)
# more code
我也有另一個模型,需要指定一個所有者。我的問題是:哪個是更好的(更Django的十歲上下,更具可讀性,更高效,更靈活的)的方式來表示業主:
class Owned(models.Model):
# code
owner = models.ForeignKey(User)
# more code
或:
class Owned(models.Model)
# code
owner = models.ForeignKey(UserExtension)
# more code
我會很感激如果你提到這些方法的優點和缺點。
謝謝你關於Django 1.5的說明,我不知何故肯定錯過了它,但儘管是RC,但我很可能會轉移到它。在附註中,在我的例子和擁有的對象中,應該由具有UserExtension的用戶擁有,而不是例如超級用戶(這是純粹的管理並且沒有UserExtension)。你認爲這樣做有點矯枉過正,以確保這種情況不會發生在數據庫和編程上? – dmg
對我來說,在大多數情況下,以編程方式確保安全。一般來說 - 如果你創建了自己的用戶模型 - 除非你有充分的理由不這樣做,我不會在不同類型的用戶模型之間劃分界限(例如爲管理員和普通用戶分開模型)。 – Teisman