Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Django尝试加入OneToOne关系_Django_Django Queryset_Django Orm - Fatal编程技术网

在Django尝试加入OneToOne关系

在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(_('

我需要一些帮助使用Django进行连接,这看起来应该很容易。我已经看了文档,但似乎出于某种原因它不会加入

我试图进入我的视图,model.Photo和model.PhotoExtended都加入并显示在视图中。目前,我只是想让model.Photo显示出来,但加入一个查找request.user并根据它过滤的连接

它们在不同的应用程序中

models.py用于model.Photo

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
,我知道了,我忘了在模型中设置了它。谢谢!