我想为基于Photologue
应用程序的用户制作画廊。为了将用户的个人资料连接到我想使用的 photologue 模型OneToOne
。我还想......让我们说get_absolute_url
模板使用的'覆盖' photologue's 。
# models
from photologue.models import Gallery
from profiles.models import UserProfile
class GalleryExtended(models.Model):
gallery = models.OneToOneField(Gallery)
user = models.ForeignKey(UserProfile, verbose_name=_('user'), on_delete=models.CASCADE)
def get_absolute_url(self):
return reverse('profiles_user:profiles_gallery-details', args=[self.user.user_url, self.gallery.slug])
# views
from photologue.views import Gallery
from profiles.models import UserProfile
from .models import GalleryExtended, PhotoExtended
def get_user_gallery_queryset(self):
user = get_object_or_404(UserProfile, user_url=self.kwargs['user_url'])
gallery = Gallery.objects.filter(galleryextended__user=user)
return gallery
class ProfileGalleryDateView(object):
date_field = 'date_added'
allow_empty = True
get_queryset = get_user_gallery_queryset
# site.com/username/gallery (shows photos + images with a filter by year)
class ProfileGalleryPhotoArchiveIndexView(ProfileGalleryDateView, ArchiveIndexView):
template_name = 'galleries/gallery_n_photo_archive.html'
所以考虑到如果我这样做
gallery = Gallery.objects.filter(galleryextended__user=user)
模板开始使用 Photologue 的get_absolute_url
(我不使用 corephotologue
的 url url(r'^photologue/', include('photologue.urls', namespace='photologue')),
,因为我将应用程序集成到我自己的 url 架构中)
是否有可能恢复到这样的事情
gallery = GalleryExtended.objects.filter(user=user).***(get fields from Gallery)***
并避免django.core.exceptions.FieldDoesNotExist: GalleryExtended has no field named 'date_added'
以开始使用get_absolute_url
from GalleryExtended
?
我知道,通过继承扩展 s 模型可以轻松解决photologue
,但我想知道是否可以使用 OneToOne?因为在我读过的一些资料中,建议使用 1to1 而不是继承。