首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django 1.3 UserProfile匹配查询不存在

django 1.3 UserProfile匹配查询不存在
EN

Stack Overflow用户
提问于 2011-03-30 03:37:23
回答 2查看 9.2K关注 0票数 5

我对用户模型有一个小问题,模型看起来是这样的:

代码语言:javascript
复制
#! -*- coding: utf-8 -*-

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

class UserProfile(models.Model):
      url = models.URLField(max_length = 70, blank = True, verbose_name = 'WWW')
      home_address = models.TextField(blank = True, verbose_name = 'Home Adress')
      user = models.ForeignKey(User, blank = True, unique = True)

      def __unicode__(self):
          return '%s' %(self.user)

当我打开django-shell并第一次导入用户时:

代码语言:javascript
复制
u = User.objects.get(id = 1)

然后:

代码语言:javascript
复制
zm = UserProfile.objects.get(user = u)

我得到一个错误:

DoesNotExist: UserProfile匹配查询不存在。

这个想法很简单,首先我创建一个用户,它起作用了,然后我想给用户添加一些信息,它不起作用:/

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-30 03:53:23

您确定该用户的UserProfile对象存在吗?Django不会自动为你创建它。

你可能想要的是:

代码语言:javascript
复制
u = User.objects.get(id=1)
zm, created = UserProfile.objects.get_or_create(user = u)

如果你确定这个概要文件存在(并且你已经正确设置了AUTH_PROFILE_MODULE),那么用户模型已经有了一个助手方法来处理这个问题:

代码语言:javascript
复制
u = User.objects.get(id=1)
zm = u.get_profile()
票数 8
EN

Stack Overflow用户

发布于 2011-03-30 03:55:40

As discussed in the documentation,Django不会自动为您创建配置文件对象。这是你的责任。一种常见的方法是将保存后的信号处理程序附加到用户模型,然后在创建新用户时创建配置文件。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5477925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档