に基づいてdjango-photologue
私は自分のギャラリーを持ち、管理者のギャラリーの所有者を派遣したいと思っています。インラインを使用せずに管理者にフィールドを追加するにはどうすればよいですか?
Inlines
管理ページの下部にフィールドのブロックを追加します。私は管理ページのメインブロックに、つまりGallery
モデルの他のフィールドの中に表示したい1つのフィールドuser
が必要です。
# 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 __str__(self):
return self.gallery.title
# admin
from django import forms
from django.contrib import admin
from photologue.admin import GalleryAdmin as GalleryAdminDefault
from photologue.models import Gallery
from .models import GalleryExtended
class InlineGalleryExtendedAdmin(admin.TabularInline):
model = GalleryExtended
class GalleryAdminForm(forms.ModelForm):
class Meta:
model = Gallery
exclude = ('description',)
class GalleryAdmin(GalleryAdminDefault):
form = GalleryAdminForm
save_on_top = True
inlines = [InlineGalleryExtendedAdmin] # Do not want to use inlines
私はclass GalleryAdmin
に追加しようとしました:
fields = ('user',) # also tried to add to fieldsets
def user(self, instance):
return instance.galleryextended.user
が、それは動作しません。
list_display = ('user',)
へ
site.com/admin
アプリケーションのサブカテゴリリンクを移動する時、私は、このフィールドが編集可能にします。 – TitanFighterフィールド 'user'を追加し、' save() 'をフォームに変更します。そして、 'def user(self、instance):'あなたは 'formfield'ではなく' modelfield'を取り除いて返すことができます。 – dd42