2009-05-13 4 views
4

Ich möchte in der Lage sein, einen Verweis auf den derzeit authentifizierten Benutzer mit einem Hinweis bei der Arbeit mit Notes von der Admin-Oberfläche aufzunehmen. Das Modell würde in etwa so aussehen:Kann ein Django-Modell automatisch den aktuellen authentifizierten Benutzer über die Admin-Oberfläche ausfüllen?

from django.db import models 
from django.contrib.auth.models import User 
from datetime import datetime 



class Note(models.Model): 
    datetime = models.DateTimeField(default=datetime.now) 
    author = models.ForeignKey(User, default=authenticated_user) 
    note  = models.TextField() 

    def __unicode__(self): 
     return unicode(self.author) + u' - ' + unicode(self.datetime) 

Das einzige Feld, das der Benutzer sehen sollte, ist das Notiztextfeld. Die Datetime und der Autor sollten automatisch vom Model, Admin Interface oder was auch immer ausgefüllt werden. Kann das gemacht werden? Jeder hat einen Beispielcode?

Danke!

Antwort

4

Die Einstellung des Datums kann vorgenommen werden, indem auto_now_add=True für die Datetime-Felddefinition angegeben wird.

die Benutzer festlegen auf im Admin speichern, tut dies in Ihrer Admin-Klasse:

class NoteAdmin(admin.ModelAdmin): 
    ...usual admin options... 

    def save_model(self, request, obj, form, change): 
     obj.user = request.user 
     obj.save() 
+0

Dies sollte funktionieren, aber was ist, wenn Sie das Benutzerfeld in der Form vor dem Speichern ihnen zeigen wollten? – user27478

+0

Möchten Sie wirklich ein * bearbeitbares * Feld für den Benutzer zeigen? Es ist ein Fremdschlüssel, also möchten Sie eine Auswahlbox mit allen verfügbaren Benutzern, aber die aktuelle ist vorausgewählt? Wenn ja, könnten Sie versuchen, add_view in Ihrer ModelAdmin-Klasse zu überschreiben, um ein zusätzliches Anfangsfeld zu übergeben - werfen Sie einen Blick auf django.contrib.admin.options für den Code. Wenn Sie nur den Benutzernamen anzeigen möchten, können Sie dies mit {{request.user}} in der Vorlage tun. –

Verwandte Themen