0

アプリに基づいてユーザー向けのギャラリーを作成したい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は使用しません)。photologueurl(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_urlGalleryExtended

継承によって s モデルを拡張することで簡単に解決できることはわかっていますがphotologue、OneToOne を使用できるかどうかを知りたいですか? 私が読んだいくつかの情報源では、継承の代わりに 1to1 を使用することが推奨されているためです。

4

1 に答える 1