簡體   English   中英

在Django問題中擴展用戶模型

[英]Extending User Model in Django Issues

我當前正在運行Django 1.6,並嘗試使用此教程擴展用戶模型: https : //docs.djangoproject.com/zh-CN/1.6/ref/models/fields/#django.db.models.OneToOneField可以讓它工作的是,如果我創建了AdditionalUser對象並向后退到User模型。

我使用以下代碼:

from django.db import models 
from django.contrib.auth.models import User

class AdditionalUser(models.Model):
    user = models.OneToOneField(User)
    hobby = models.CharField(max_length=50)
    weight = models.FloatField()

但是當我嘗試執行以下操作時,它給我帶來了False:

user = User.objects.get(pk=1)
hasattr(user, 'hobby')
False

創建此新模型后,我已經運行過syn​​cdb。 我做錯了什么嗎?

User對象不具有您在AdditionalUser指定的屬性。 但是,它確實具有additionaluser屬性:

user = User.objects.get(pk=1)
# create the AdditionalUser object
additional = AdditionalUser.objects.create(user=user)
hasattr(user.additionaluser, 'hobby')
True

在OneToOneField文檔說這個

一對一的關系。 從概念上講,這類似於具有unique = True的ForeignKey,但是關系的“反向”側將直接返回單個對象。 (...)如果您未為OneToOneField指定related_name參數,則Django將使用當前模型的小寫名稱作為默認值。

如果User對象中不存在'hobby'屬性,則您將始終為False。

嘗試這個:

user = AdditionalUser.objects.filter(user__id=1)[0]
hasattr(user, 'hobby')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM