2017-12-07 2 views
0

Ich habe die folgende Modellform, die ich in der Mehrzahl meiner Modelle erben.Ändern django Admin Formulare

class UserStamp(models.Model): 
    created_by = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, 
            related_name='%(app_label)s_%(class)s_created_by', on_delete=models.CASCADE) 
    updated_by = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True, 
            related_name='%(app_label)s_%(class)s_updated_by', on_delete=models.CASCADE) 

    class Meta: 
     abstract = True 

Wo ich meine eigenen Formen konstruieren verwende ich

form.instance.created_by = self.request.user 

und alles ist in Ordnung.

Aber nicht in Admin (erwartet Personalbenutzer), weil er seine eigenen Formulare verwendet. Was ist der einfachste Weg, um die Admin-Formulare ordnungsgemäß funktionieren zu lassen (etwas, das ich nicht tun muss, um sie von Null zu tun).

Antwort

1

Sie können save_model in Ihrer ModelAdmin-Klasse überschreiben.

class MyModelAdmin(admin.ModelAdmin): 
    def save_model(self, request, obj, form, change): 
     obj.created_by = request.user 
     obj.save()