Come fare in modo che Django ImageField salvi l'immagine su un altro modello?
-
06-07-2019 - |
Domanda
Ho un'applicazione per i profili dei membri che memorizza semplici informazioni sui membri di una squadra. Parte del profilo è un'immagine da utilizzare come avatar. Sto usando Photologue per creare gallerie standard di foto, ma ha un ImageModel che può essere esteso per sfruttare la funzionalità di ridimensionamento e memorizzazione nella cache di Photologue .
Il problema è che l'esempio che danno sulla loro pagina è simile al seguente:
from django.contrib.auth.models import User
from photologue.models import ImageModel
class UserPortrait(ImageModel):
user = models.OneToOneField(User, primary_key=True)
Potrei sostituire Utente con Membro e tutto andrebbe bene, tranne per il fatto che la modifica del profilo diventa un processo in due fasi; Per prima cosa dovrei creare un profilo Membro, quindi creare un UserPortrait e associarlo al Membro. Vorrei razionalizzarlo in un unico processo, come se stessi usando un ImageField.
Ho sovrascritto i campi immagine a livello di modulo e a livello admin.py, ma mi chiedo se posso gestirli a livello di modello o persino a livello di campo. Mi piacerebbe avere la funzionalità incorporata di un ImageField ma avere comunque il file gestito da un modello separato e correlato. Le linee del modello reale sembrano eccessive poiché è solo un'immagine.
Soluzione
La tua classe Member dovrebbe estendere ImageModel. Non è necessaria una classe aggiuntiva (ad es. UserPortrait).