2010-11-17 9 views
1
class ServiceInline(admin.TabularInline): 
    model = Service 

class PlanAdmin(admin.ModelAdmin): 
    inlines = [ServiceInline] 

class ServiceAdmin(admin.ModelAdmin): 
    def save_model(self, request, obj, form, change): 
     instance = form.save(commit = False) 
     if not instance.created_at and not instance.modified_at: 
      instance.created_by = request.user 
     instance.modified_by = request.user 
     instance.save()   
     form.save_m2m() 
     return instance 

J'ai substitué la méthode save_model(self, request, obj, form, change): de la classe Service dans sa classe admin. Mais cette méthode surchargée n'est pas appelée lorsqu'un objet Service est ajouté via Inline (la page de Plan). Aucune suggestion?Django - La méthode substituée de l'objet Inline n'est pas appelée

+0

pouvez-vous envoyer un code de comment vous remplacer cette méthode de sauvegarde? –

+0

@Zayatzz Mise à jour –

Répondre

0

Plutôt que d'utiliser la fonction save_model dans l'admin, que je ne pense pas que va travailler, qu'en ce qui suit:

class PlanAdmin(admin.ModelAdmin): 
    # ... 
    def save_model(self, request, obj, form, change): 
     instance = form.save(commit=False) 
     instance.last_updated_by = request.user 
     instance.save() 

class Service(models.Model): 
    # ... 
    created_by = models.ForeignKey(User, blank=True) 

    def save(self, *args, **kwargs): 
     self.created_by = self.plan.last_updated_by 
     super(Service, self).save(*args, **kwargs) 
+0

@sneenu Merci pour votre aide. Mais, cette réponse semble ne pas fonctionner. Aucune suggestion? –

+0

@Siva J'ai réécrit la réponse, ce qui devrait aider. – sneeu

0

Je pense que ce que vous voulez vraiment faire est de déplacer cette méthode save_model dans la classe ServiceInline. Le ServiceInline, dans ce cas, est votre classe Admin pour le Service.