【问题标题】:Can't get class as attribute which has one-to-one relationship?无法将类作为具有一对一关系的属性?
【发布时间】:2012-10-18 03:55:06
【问题描述】:

我是 Python/Django 的新手,如果我忽略了一些简单的错误,请原谅我。 我正在尝试使用 Twython 并且几乎复制了代码 here

我似乎无法使用这样的点语法获取 TwitterProfile:

user = request.user.twitterprofile

它给了我错误:

DoesNotExist at /social/user_timeline/
TwitterProfile matching query does not exist.

但如果我得到这样的个人资料:

user = TwitterProfile.objects.get(user = u)

它似乎工作正常...花了几个小时才弄清楚..

我还必须在 TwitterProfile 类中为用户添加一个 related_name:

user = models.OneToOneField(User, related_name='twitteruser')

知道为什么我不能像那样访问 TwitterProfile 吗?

【问题讨论】:

    标签: python django one-to-one twython


    【解决方案1】:

    related_name 定义了链接模型上的属性名称,所以你可以这样做:

    user = request.user.twitteruser
    

    【讨论】:

    • 你是第一个知道这意味着什么的人!
    【解决方案2】:

    首先,您需要在 settings.py 中定义您的 AUTH_PROFILE_MODULE

    from twython_django_oauth.models import TwitterProfile
    
    AUTH_PROFILE_MODULE = TwitterProfile
    

    然后,您可以通过请求访问您的个人资料:

    request.user.get_profile()
    

    【讨论】:

    • drewman,谢谢我以前用这个作为 UserProfile,但我也想要一个 Facebook 个人资料,所以 dokkaebi 的答案似乎更合适:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-22
    • 2015-06-27
    相关资源
    最近更新 更多