Can';无法获取django中属于用户的配置文件对象
我在Django中有一个博客应用程序,在主页上我会显示所有帖子以及发布的用户。但是,我现在尝试将用户的配置文件图像添加到用户名旁边,而我似乎无法从配置文件对象中提取任何数据。在我的模板中,当我在帖子中循环时,像Can';无法获取django中属于用户的配置文件对象,django,Django,我在Django中有一个博客应用程序,在主页上我会显示所有帖子以及发布的用户。但是,我现在尝试将用户的配置文件图像添加到用户名旁边,而我似乎无法从配置文件对象中提取任何数据。在我的模板中,当我在帖子中循环时,像{{post.user}}这样的代码可以很好地工作,但是当我尝试扩展到像post.user.profile.profile\u image.url这样的代码时,什么也没有显示 models.py: class Post(models.Model): user = models.Fo
{{post.user}}
这样的代码可以很好地工作,但是当我尝试扩展到像post.user.profile.profile\u image.url这样的代码时,什么也没有显示
models.py:
class Post(models.Model):
user = models.ForeignKey(User, on_delete= models.CASCADE)
class Profile(models.Model):
user = models.ForeignKey(User, on_delete= models.CASCADE)
profile_image = models.ImageField(default='image.png', upload_to='profile_images', blank=True, null=True)
views.py:
def home(request):
posts = Post.objects.annotate(comments_count=Count('comments')).order_by('-created_date')
common_tags = Post.tags.most_common()[:4]
title = ""
return render(request, 'post/home.html', {'posts': posts, 'common_tags': common_tags})
在我的html模板中,我只是做了一个{%forpost-in-posts%}
循环
有什么想法吗
谢谢 AForeignKey
是一个多对一的关系,因为多个Profile
s都可以指向同一个用户。这也意味着,如果您不指定,您可以使用user.profile\u set.all()
访问相关的配置文件
你可能需要的是一份工作。这本质上是一个外键
,但是有一个参数,但是名称约定也不同。如果您不指定相关的名称=…
,那么它只是.modelname
,这意味着您可以使用user.Profile
访问配置文件
因此,您可以通过以下方式更改此设置:
from django.conf import settings
class Profile(models.Model):
user = models.OneToOneField(
settings.AUTH_USER_MODEL,
on_delete= models.CASCADE
)
profile_image = models.ImageField(
default='image.png',
upload_to='profile_images',
blank=True,
null=True
)
来自django.conf导入设置的
类配置文件(models.Model):
用户=models.OneToOneField(
settings.AUTH\u用户\u模型,
on_delete=models.CASCADE
)
profile_image=models.ImageField(
default='image.png',
上传图片到class='profile',
空白=真,
空=真
)
注意:通常最好使用来引用用户模型,而不是直接使用。有关更多信息,请参见
由于您使用的是ForeignKey
,因此用户可以拥有多个配置文件。您可能应该将其更改为OneToOneField
。就是这样,谢谢!那么外键是一对多关系@WillemVanOnsemno多对一:)哦,好的,谢谢你!8分钟后我会接受你的回答。这工作做得很好。非常感谢您的回答和透彻的解释!!