è system_user () definita in Django?
-
13-10-2019 - |
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?
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)