2011-02-09 20 views
1

は私がFashionMaleModelを変更したり、追加しようとすると、インラインで表示されませんが、彼らはFashionFemaleModelで行うmodels.py/admin.py欠落インライン

については、以下を参照してください。管理サイトが登録されている順序を変更してMaleをFemale以下にすると、インラインはFashionFoldModelではなく、FashionMaleModelにのみ表示されます。

なぜ私のインラインはどちらか一方にしか見えないのですか?

ありがとうございます!


たくさんあるので、これらのモデルを切り捨てました。また、FashionObject/FashionPageがベース私はidのカスタムCMSの一環として作成したクラス、名前、公開日などです

models.py:

class FashionModelRole(models.Model): 
    title = models.CharField(max_length=255,) 

class FashionModelContributor(models.Model): 
    role = models.ForeignKey(FashionModelRole) 
    person = models.ForeignKey(FashionModelPerson, related_name='contributions') 

class FashionModel(FashionObject): 
    gender = models.CharField(max_length=1,choices=(('F','Female'),('M','Male')), 
editable=False) 

class FashionExperience(models.Model): 
    model = models.ForeignKey(FashionModel, related_name = 'experience') 
    division = models.ForeignKey(FashionDivision, related_name = 'levels') 
    experience = models.CharField(max_length=1,choices=(('5','Professional'),('4','Advanced'),('3','Intermediate'),('2','Developing'),('1','Recreational'),)) 

class FashionMaleModel(FashionModel): 
    jacket_size = MeasurementField(max_length=6, blank=True, null=True) 

    def __init__(self, *args, **kwargs): 
     super(FashionMaleModel, self).__init__(*args, **kwargs) 
     self.gender = 'M' 

class FashionFemaleModel(FashionModel): 
    dress_size = MeasurementField(max_length=6, blank=True, null=True) 

    def __init__(self, *args, **kwargs): 
     super(FashionFemaleModel, self).__init__(*args, **kwargs) 
     self.gender = 'F' 

class FashionModelPhoto(models.Model): 
    model = models.ForeignKey(FashionModel, related_name = 'photos') 
    contributors = models.ManyToManyField(FashionModelContributor, null=True, blank=True) 

admin.py:

class FashionExperienceInline(admin.TabularInline): 
    model = FashionExperience 

class FashionModelPhotoInline(admin.TabularInline): 
    model = FashionModelPhoto 

class FashionDivisionAdmin(FashionPageAdmin): 
    def __init__(self, *args, **kwargs): 
     super(FashionDivisionAdmin, self).__init__(*args, **kwargs) 

class FashionModelAdmin(FashionObjectAdmin): 
    def __init__(self, *args, **kwargs): 
     super(FashionModelAdmin, self).__init__(*args, **kwargs) 
     self.inlines += (
      FashionModelPhotoInline, 
      FashionExperienceInline, 
      ) 

class FashionMaleModelAdmin(FashionModelAdmin): 
    def __init__(self, *args, **kwargs): 
     super(FashionMaleModelAdmin, self).__init__(*args, **kwargs) 

class FashionFemaleModelAdmin(FashionModelAdmin): 
    def __init__(self, *args, **kwargs): 
     super(FashionFemaleModelAdmin, self).__init__(*args, **kwargs) 

class FashionModelPersonAdmin(admin.ModelAdmin): 
    def __init__(self, *args, **kwargs): 
     super(FashionModelPersonAdmin, self).__init__(*args, **kwargs) 

class FashionModelRoleAdmin(admin.ModelAdmin): 
    def __init__(self, *args, **kwargs): 
     super(FashionModelRoleAdmin, self).__init__(*args, **kwargs)   

class FashionModelContributorAdmin(admin.ModelAdmin): 
    def __init__(self, *args, **kwargs): 
     super(FashionModelContributorAdmin, self).__init__(*args, **kwargs) 

admin.site.register(FashionMaleModel, FashionMaleModelAdmin) 
admin.site.register(FashionFemaleModel, FashionFemaleModelAdmin) 
admin.site.register(FashionDivision, FashionDivisionAdmin) 
admin.site.register(FashionModelPerson, FashionModelPersonAdmin) 
admin.site.register(FashionModelRole, FashionModelRoleAdmin) 
admin.site.register(FashionModelContributor, FashionModelContributorAdmin) 

答えて

1

私はその後、私は一つ一つの内側に個別にインラインを定義し、FashionMaleModelAdminとFashionFemaleModelAdminのクラスから__init__機能を取り出した:

inlines = (FashionModelPhotoInline, FashionExperienceInline) 

動作するようです。これを見た皆さん、ありがとう。

+0

私はそれが面倒なことだった '+ ='だと思う...あなたはインラインでそれをすることはできないと思う。 – Lexo