2016-09-02 3 views
0

に基づいて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',) 

答えて

0

filedsに、あなたが追加することができます。それはつまり、単にlist_displayのために働きますこのようにすると:

# models.py 
from photologue.models import Gallery 
from profiles.models import UserProfile 

# - class GalleryExtended(models.Model): 
class GalleryExtended(Galley): 
# - gallery = models.OneToOneField(Gallery) 
    user = models.ForeignKey(UserProfile, verbose_name=_('user'), on_delete=models.CASCADE) 

# admin.py 

from django.contrib import admin 

from photologue.admin import GalleryAdmin as GalleryAdminDefault 
from photologue.models import Gallery 

from .models import GalleryExtended 

class GalleryAdmin(GalleryAdminDefault): 
    save_on_top = True 

admin.site.unregister(Gallery) 
admin.site.register(GalleryExtended, GalleryAdmin) 

userフィールドはメインブロックの内側にあります。マイナス面として - 独自のアプリカテゴリ

0

ので、readonly_fields'user'を追加し、OneToOneFieldが必要なモデルの直接の継承とほぼ同じである'user'

https://docs.djangoproject.com/en/1.10/ref/contrib/admin/#django.contrib.admin.ModelAdmin.readonly_fields

+0

site.com/adminアプリケーションのサブカテゴリリンクを移動する時、私は、このフィールドが編集可能にします。 – TitanFighter

+0

フィールド 'user'を追加し、' save() 'をフォームに変更します。そして、 'def user(self、instance):'あなたは 'formfield'ではなく' modelfield'を取り除いて返すことができます。 – dd42

関連する問題