Django:被授予人

2024-05-18 07:53:30 发布

您现在位置:Python中文网/ 问答频道 /正文

当我试图从其他表中使用外键检索数据时,出现以下异常:

'User' object has no attribute 'UserFeed_set'

视图:

def user_page(request, username):
    try:
        u = User.objects.get(username=username)
    except User.DoesNotExist:
        raise Http404(u'Requested user not found.')
    feeds = u.UserFeed_set.all()
    variables = RequestContext(request, {
        'username' : username,
        'feeds' : feeds
    })
    return render_to_response('user_page.html', variables)

型号.py:

from django.contrib.auth.models import User

class AllFeeds(models.Model):
    url = models.CharField(unique=True, max_length=40)

    def __unicode__(self):
        return self.url

class UserFeed(models.Model):
    user = models.ForeignKey(User)
    myfeeds = models.ForeignKey(AllFeeds)

    def __unicode__(self):
        return u'%s %s'%(self.user.username,self.link.url)

Tags: selfurlreturnmodelsrequestdefpageusername
3条回答

这里的主要问题是您需要使用正确的相关名称格式,它都是小写的;但是您的模型还有一些其他问题。

清理你的代码,你会得到:

from django.shortcuts import get_object_or_404, render

def user_page(request, username):
    u = get_object_or_404(User, username=username)
    feeds = u.userfeed_set.all()
    variables = {
        'username' : username,
        'feeds' : feeds
    }
    return render(request, 'user_page.html', variables)

您的模型还需要一些编辑,因为您没有self.link.url

from django.contrib.auth.models import User

class AllFeeds(models.Model):
    url = models.URLField(unique=True, max_length=40)

    def __unicode__(self):
        return unicode(self.url)

class UserFeed(models.Model):
    user = models.ForeignKey(User)
    myfeeds = models.ForeignKey(AllFeeds)

    def __unicode__(self):
        return unicode('{0} {1}'.format(self.user.username, self.myfeeds.url))

如我所知,如果两个模型使用manytomany关系,则可以使用u.userfeed_set.all(),但正如您所说,您的模型使用的是一对一关系

如果在UserFeed模型的ForeignKey字段上没有^{},那么它应该是一个可访问的user.userfeed_set。(默认名称是model.__name__.lower() + "_set")。

如果您已经设置了releated_name,那么将调用您命名的作为值的方法。

相关问题 更多 >