2011-02-09 3 views
1

Voir ci-dessous pour models.py/admin.pyinline manquantes dans Django Administrateur

Lorsque je tente de modifier ou d'ajouter un FashionMaleModel, les inline ne semblent pas, mais ils le font dans FashionFemaleModel. Si je change l'ordre dans lequel les sites d'administration sont enregistrés, en mettant Homme ci-dessous Femme, alors les inlines n'apparaissent que dans FashionMaleModel, et non FashionFemaleModel. Pourquoi mes inlines n'apparaissent-ils que dans l'un ou dans l'autre?

Merci!


J'ai tronqué ces modèles car il y en a beaucoup. En outre, FashionObject/FashionPage sont des classes de base que j'ai créées dans le cadre d'un CMS sur mesure avec l'identifiant, le nom, publish_date, etc.

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) 

Répondre

1

Je pris les __init__ fonctions des classes de FashionMaleModelAdmin et FashionFemaleModelAdmin, alors je définissais les inline séparément à l'intérieur chacun:

inlines = (FashionModelPhotoInline, FashionExperienceInline) 

Semble fonctionner. Merci à tous ceux qui ont regardé ça.

+0

Je pense que c'était le '+ =' qui était en train de tout chambouler ... devinez que vous ne pouvez pas le faire avec des inlines. – Lexo

Questions connexes