Frage

Meine ursprüngliche Frage war tatsächlich, wie man einen Benutzer fremd zur Photologischen Typ -Klasse hinzufügt (der ImageKit verwendet)

Ich sehe eine Antwort auf eine ähnliche Frage, aber als ich versuchte, es umzusetzen, bekomme ich global name 'system_user' is not defined

Ich bin davon nicht überrascht, aber ich bin überrascht, dass ich, obwohl es in einer Antwort ist, keinen Verweis finden kann system_user In Django Docs.

(Es ist nicht auf docs.djangoproject.com und Google für Django+System_USER gibt nichts Interessantes zurück.)

Ich habe das in der class Photo In Photologue Models.py

def save(self, *args, **kwargs):
    if self.title_slug is None:
        self.title_slug = slugify(self.title)
    if 'owner' not in self.__dict__:
         self.owner = system_user()               # this line fails
    super(Photo, self).save(*args, **kwargs)

Wie soll ich importieren system_user(), oder was kann ich stattdessen hier verwenden?

War es hilfreich?

Lösung

Nein, system_user ist keine Django -Funktion. Sie sollten alle Code -Snippets als Pseudo -Code nehmen - er sagt nur "eine Funktion, die mein Objekt zurückgibt".

grep -ri "system_user" /path/to/django Gibt nichts zurück, so dass es in der Django -Quelle nicht existiert.

Schauen Sie sich die akzeptierte Antwort in der Frage an, mit der Sie verknüpft sind, er überschreibt die Speichernmethode, gibt das Benutzerobjekt über und assoziiert das Objekt manuell dem Benutzer.

Da Sie in Ihrem Fall ein Modell verwenden, müssten Sie das Benutzerobjekt an das Modell weitergeben save() Methode.

# models
    def save(self, user=None, *args, **kwargs):
        if self.title_slug is None:
            self.title_slug = slugify(self.title)
        if user:
            self.owner = user
        super(Photo, self).save(*args, **kwargs)

# usage in view
myobj.save(user=request.user)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top