尝试在 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)
我需要一些帮助来使用 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)