0
デフォルトのアバターを使用して種類のプロファイルを作成したいと思います。デフォルトの画像アバター(性別による)
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)
jpgを使用して自分のフォルダにパスを返す関数を作成しようとしています。
def someone_avatar(instance):
gender = instance.gender
if gender == 'Male':
avatar = 'avatars/m.jpg'
else:
avatar = 'avatars/f.jpg'
return avatar
明らかに動作しないので、解決方法を教えてください。 保存方法を上書きする必要がありますか? Thx。
編集
[OK]を、私はpost_saveと試みたが、それは同様に機能does't:
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)
は、たぶん私はちょうどパスのような文字列に設定されたアバターべきではないのですか?
編集2
これはpre_saveで動作しています。
ええ、 'pre_save'はとにかく' post_save'が作成し、追加の 'UPDATE'を行うので、より良いです。 –