Domanda

La mia domanda iniziale era in realtà come aggiungere una chiave esterna per l'utente alla classe tipo photolog (che usi Imagekit)

vedo un risposta a una domanda simile , ma quando ho provato per la sua attuazione, ottengo global name 'system_user' is not defined

Non mi sorprende con questo, ma mi sorprende che anche se è in una risposta, non riesco a trovare un riferimento a system_user in Django docs.

(Non è sulla docs.djangoproject.com, e Google per Django rendimenti + system_user nulla di interessante.)

ho questo nel 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)

Come devo importare system_user(), o che cosa posso usare qui, invece?

È stato utile?

Soluzione

No, system_user non è una funzione Django. Si dovrebbe prendere tutti i frammenti di codice come codice pseudo - sta solo dicendo "una funzione che restituisce il mio oggetto".

ritorna grep -ri "system_user" /path/to/django niente, quindi non esiste nella fonte Django.

Controlla la risposta accettata nella questione si è collegato al, si sostituisce il metodo di salvataggio, passa l'oggetto utente, e manualmente associa l'oggetto per l'utente.

Nel tuo caso, dal momento che si sta utilizzando un modello, che avrebbe dovuto passare l'oggetto utente al metodo dei modelli save().

# 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)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top