尝试在 Django 中加入 OneToOne 关系

Try to join a OneToOne relationship in Django

我需要一些帮助来使用 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.Photo扩展

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_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)