2016-09-02 3 views
0

django-photologue을 기반으로 사용자가 자신의 갤러리를 보유하고 관리자의 갤러리 소유자를 파견하고 싶습니다.인라인을 사용하지 않고 관리자에게 필드를 추가하는 방법은 무엇입니까?

Inlines 관리 페이지 하단에 추가 필드 블록을 제공하십시오. 나는 하나의 필드가 user이고 관리 페이지의 메인 블록, 즉 Gallery 모델의 다른 필드에 표시되기를 원합니다.

fields = ('user',) # also tried to add to fieldsets 
def user(self, instance): 
    return instance.galleryextended.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에 추가했습니다.

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 필드가 기본 블록 내부에 있습니다. 단점으로 - site.com/admin에서 앱의 하위 카테고리 링크가 자체 앱 카테고리로 이동합니다.

0

때문에, readonly_fields'user'을 추가하고 OneToOneField가 필요한 모델의 직접 상속과 거의 동일 'user'

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

+0

이 필드를 편집 가능하게하고 싶습니다. – TitanFighter

+0

그런 다음 'user' 필드를 추가하고'save()'를 변경하십시오. 그리고'def user (self, instance) :'당신은 formfield가 아니라'modieldield'를 제거 할 수 있습니다. – dd42

관련 문제