アプリに基づいてユーザー向けのギャラリーを作成したいPhotologue
。ユーザーのプロファイルを photologue のモデルに接続するために使用したいOneToOne
. get_absolute_url
また、テンプレートで使用されるphotologue を「オーバーライド」します。
# 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 の使用を開始します(アプリを独自の URL スキーマに統合するため、コアの URLget_absolute_url
は使用しません)。photologue
url(r'^photologue/', include('photologue.urls', namespace='photologue')),
このようなものに戻すことは可能ですか
gallery = GalleryExtended.objects.filter(user=user).***(get fields from Gallery)***
からdjango.core.exceptions.FieldDoesNotExist: GalleryExtended has no field named 'date_added'
使用を開始するために回避しますか?get_absolute_url
GalleryExtended
継承によって s モデルを拡張することで簡単に解決できることはわかっていますがphotologue
、OneToOne を使用できるかどうかを知りたいですか? 私が読んだいくつかの情報源では、継承の代わりに 1to1 を使用することが推奨されているためです。