2016-03-22 23 views
0

Bu benim models.py: Bir grup için bir dizine görüntüleri yüklemek istediğiniz Django'nun ImageField yolundaki değişkeni nasıl ayarlayabilirim?

class Group_Photo(models.Model): 

    group_id = models.ForeignKey(Group) 
    photo = models.ImageField(upload_to="static/image/group/" + group_id + "/") 

. Örneğin, group_id = 3 eğer

upload_to="static/image/group/3/"

Nasıl yapmalıyım?

Üzgünüm, bu bir hatadır.

File "/models.py", line 161, in Group_Photo photo = models.ImageField(upload_to="static/image/group/" + group_id + "/") TypeError: Can't convert 'ForeignKey' object to str implicitly

+0

Bu kod hata veriyor mu? Kodunuzu çalıştırmayı denediğinizde ne çıktı? – Renier

+0

@Renier Üzgünüm, Hatayı yazmayı unuttum. Ekledim. – yamachan

+0

"Hayır yapamazsın" diyen bir kişi. Birkaç farklı dizinde resim yükleyemezsem, sadece bir dizinde yüklemek zorunda mıyım? – yamachan

cevap

5

upload_to bağımsız değişken bir işlev, as described in the documentation olabilir:

def group_based_upload_to(instance, filename): 
    return "image/group/{}/{}".format(instance.group.id, filename) 

class Group_Photo(models.Model): 
    group = models.ForeignKey(Group) 
    photo = models.ImageField(upload_to=group_based_upload_to) 

fonksiyonu, iki bağımsız değişken - modeli örneği dosya eklenmiştir olan ve dosyasının özgün adı. Cadı altında göreceli bir yol döndürmesi gerekiyor, dosya kaydedilecek. MEDIA_ROOT ayarında tanımlanan yola eklenecektir.

Yukarıdaki örnek, grubun sayısal kimliğine göre dizinleri kullanır. Açıkça diğer alanları kullanabilirsiniz, örneğin sülük kullanmak için (eğer varsa) instance.group.id'u instance.group.slug ile değiştirin.

+0

Çok teşekkür ederim. Japonca belgem bundan bahsetmiyor. Bunu şimdi deneyeceğim. – yamachan

+0

Teşekkür ederim. Runserver ile başladığımda, herhangi bir hata oluşmadı. Daha sonra yükleme formunu uygulayacağım. – yamachan

İlgili konular