2010-06-15 14 views
10

mam podobny problem jak wcześniej rozwiązać problem kopalni, z wyjątkiem tego czasu rozwiązanie nie wydaje się działać:dlaczego metoda save_model nie działa w admin.StackedInline?

How to auto insert the current user when creating an object in django admin?

Wcześniej użyłem przesłonić save_model pieczęć użytkownika wysyłającego artykuł. Teraz muszę zrobić to samo dla komentarzy, to już nie działa.

Ktoś ma jakieś pomysły?

Wielkie dzięki!

Jason

Odpowiedz

19

Oszczędność nie jest wykonywana w InlineAdmin na save_form, trzeba spojrzeć na save_formsets w ModelAdmin do którego inlines należą:

class MyAdmin(admin.ModelAdmin): 
    inlines = [MyInlineAdmin,.....] 

    def save_formset(self, request, form, formset, change): 
     formset.save() 
     if not change: 
      for f in formset.forms: 
       obj = f.instance 
       obj.user = request.user 
       obj.save() 
+1

Dzięki wielkie! Aby podać bardziej konkretny przykład: http://stackoverflow.com/questions/1477319/how-to-get-the-django-current-login-user – FurtiveFelon

+0

Czy jesteś pewien: jeśli nie zmieniasz: czy jest poprawny? Czy nie powinno to być, gdyby zmiana :? Dzięki za twój przykład !!! Głosowałem. –

+2

@LukeDupin Myślę, że to jest poprawne. Jak napisano, ustawiałby użytkownika tylko wtedy, gdy tworzony jest obiekt wstawiany, ale nie w przypadku aktualizacji. – TehCorwiz

Powiązane problemy