在Django尝试加入OneToOne关系
我需要一些帮助使用Django进行连接,这看起来应该很容易。我已经看了文档,但似乎出于某种原因它不会加入 我试图进入我的视图,model.Photo和model.PhotoExtended都加入并显示在视图中。目前,我只是想让model.Photo显示出来,但加入一个查找request.user并根据它过滤的连接 它们在不同的应用程序中 models.py用于model.Photo在Django尝试加入OneToOne关系,django,django-queryset,django-orm,Django,Django Queryset,Django Orm,我需要一些帮助使用Django进行连接,这看起来应该很容易。我已经看了文档,但似乎出于某种原因它不会加入 我试图进入我的视图,model.Photo和model.PhotoExtended都加入并显示在视图中。目前,我只是想让model.Photo显示出来,但加入一个查找request.user并根据它过滤的连接 它们在不同的应用程序中 models.py用于model.Photo class Photo(ImageModel): title = models.CharField(_('
class Photo(ImageModel):
title = models.CharField(_('title'),
max_length=60,
unique=True)
slug = models.SlugField(_('slug'),
unique=True,
help_text=_('A "slug" is a unique URL-friendly title for an object.'))
models.py用于model.PhotoExtended
class PhotoExtended(models.Model):
Photo = models.OneToOneField(Photo, related_name='extended', help_text='Photo required', null=True)
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, help_text='User that uploaded the photo')
views.py
class PhotoExtendedUserView(ListView):
template_name = 'photo_user_list.html'
def get_queryset(self):
user = get_object_or_404(User, username=self.request.user)
return Photo.objects.filter(photoextended__user=user)
您将
Photo
上的related\u name
设置为extended
,因此需要进行如下筛选:
class PhotoExtendedUserView(ListView):
template_name = 'photo_user_list.html'
def get_queryset(self):
user = get_object_or_404(User, username=self.request.user)
# 'extended' vs. 'photoextended'
return Photo.objects.filter(extended__user=user)
什么不起作用了?嗨,谢谢,太好了。那么,为什么扩展工作,而不是光扩展?这是因为您必须在模型上使用最后一个单词吗?
related\u name
参数会覆盖您使用的术语,因此如果您使用了models.OneToOneField(Photo,related\u name='superawesome')
,那么您将使用过滤器(superawesome\u user=user)
进行过滤。如果不使用related_name
的默认值是类的名称,在您的情况下,类的名称将是photoextended
,我知道了,我忘了在模型中设置了它。谢谢!