gpt4 book ai didi

python - 无法理解 Django 中的查询集

转载 作者:行者123 更新时间:2023-12-01 01:22:20 25 4
gpt4 key购买 nike

我有一个连接到模型的用户个人资料页面,其中包含以下字段:

class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
image = models.ImageField(default='default.jpg', upload_to='profile_pics')

这就像它应该的那样工作;加载与相关用户相关的个人资料图像,并区分用户。我现在想做的是将一个单独的图库模型连接到个人资料页面,用户可能有一个小的图片库可以闲逛。画廊模型如下所示:

class GalleryModel(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
img_1 = models.ImageField(default='default.jpg', upload_to='images')
img_2 = models.ImageField(default='default.jpg', upload_to='images')
img_3 = models.ImageField(default='default.jpg', upload_to='images')

views.py 文件如下所示:

class ProfileDetailView(DetailView):
model = Profile # Is something iffy here? Should this refer to the GalleryModel as well?
template_name = 'account/view_profile.html'

def get_object(self):
username = self.kwargs.get('username')
if username is None:
raise Http404
return get_object_or_404(User, username__iexact=username, is_active=True)

def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
username = self.object.username
context['person'] = GalleryModel.objects.get(user__username=username) #loads username string
context['img_1'] = GalleryModel.objects.last().img_1
context['img_2'] = GalleryModel.objects.last().img_2
context['img_3'] = GalleryModel.objects.last().img_3
return context

我尝试了很多想法(即filter()和get()方法的各种方法)并仔细检查https://docs.djangoproject.com/en/2.1/topics/db/queries/并筛选我能在 SO 上找到的内容,但我无法解决。

例如,filter(username__iexact=username) 似乎没有达到目的,主题的变化也不会产生除了错误消息之外的任何内容,我不太明白。如果我在模板中插入 {{ person }} ,我可以获取用户名,但是如何在 GalleryModel 中获取连接到用户名的对象(图像)?

尝试以下操作是行不通的:

GalleryModel.objects.get(user__username=username).img_1

一如既往,我有一种奇怪的感觉,我错过了一些相当简单的东西:)

注意!:显然,我知道 last() 方法不是我应该做的,但到目前为止,这是我设法将图像渲染到模板的唯一方法。

最佳答案

如果要将图库连接到个人资料,则必须将个人资料添加为外键,而不是用户。

class GalleryModel(models.Model):
profile = models.ForeignKey(Profile, on_delete=models.CASCADE)

除非您有其他类型的图库,否则请使用 Gallery(models.Model)。

关于python - 无法理解 Django 中的查询集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53705503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com