Ich möchte Art von Profilen mit Standard-Avatare erstellen.Standard-Bild-Avatar je nach Geschlecht
GENDER_CHOICES = (
('M', 'Male'),
('F', 'Female'),
)
class Someone(models.Model):
name = models.CharField(max_length=120)
gender = models.Charfield(max_length=1, choices=GENDER_CHOICES)
image = models.ImageField(upload_to='avatars', default=someone_avatar)
Ich versuche eine Funktion zu schreiben, die den Pfad zu meinem Ordner mit jpg zurückgibt.
def someone_avatar(instance):
gender = instance.gender
if gender == 'Male':
avatar = 'avatars/m.jpg'
else:
avatar = 'avatars/f.jpg'
return avatar
Offensichtlich funktioniert es nicht, also könnten Sie mir einige Ratschläge geben, wie man es löst? Vielleicht sollte ich die Speichermethode überschreiben? Thx.
Ok Herausgegeben ich mit post_save versucht, aber es umfaßt nicht so gut funktionieren:
def set_avatar(instance):
avatar = instance.image
gender = instance.gender
if gender == 'Male':
avatar = 'persons/m.jpg'
else:
avatar = 'persons/f.jpg'
return avatar
def post_save_avatar(sender, instance, *args, **kwargs):
if not instance.image:
instance.image = set_avatar(instance)
post_save.connect(post_save_avatar, sender=Person)
Vielleicht sollte ich nicht nur Avatar gesetzt wie Pfad-String?
Edit 2
Es funktioniert für pre_save.
Ja, 'pre_save' ist sowieso besser, da' post_save' machen würde und zusätzlich 'UPDATE'. –