Saya mencoba menyiapkan unggahan saya sehingga jika pengguna joe mengunggah file, ia pergi ke MEDIA_ROOT / joe sebagai lawan meminta semua orang membuka file MEDIA_ROOT. Masalahnya adalah saya tidak tahu bagaimana mendefinisikan ini dalam model. Beginilah tampilannya saat ini:
class Content(models.Model):
name = models.CharField(max_length=200)
user = models.ForeignKey(User)
file = models.FileField(upload_to='.')
Jadi yang saya inginkan bukan '.' sebagai upload_to, jadikan itu nama pengguna.
Saya mengerti bahwa mulai Django 1.0 Anda dapat mendefinisikan fungsi Anda sendiri untuk menangani upload_to tetapi fungsi itu tidak tahu siapa pengguna itu, jadi saya agak bingung.
Terima kasih untuk bantuannya!
sumber
os.path.join
alih-alih'/'.join
memastikan juga berfungsi pada sistem yang bukan Unix. Mereka mungkin jarang, tapi ini praktik yang baik;)Ini sangat membantu. Demi sedikit lebih singkat, memutuskan untuk menggunakan lambda dalam kasus saya:
sumber
pk
sebelum menabung. Ini hanya berfungsi untuk pembaruan, bukan kreasi (sisipan).migrations
operasi karena tidak dapat diserialisasi berdasarkan dokumenCatatan tentang menggunakan nilai pk objek 'instance'. Menurut dokumentasi:
Oleh karena itu validitas menggunakan pk tergantung pada bagaimana model khusus Anda didefinisikan.
sumber
Jika Anda memiliki masalah dengan migrasi, Anda mungkin harus menggunakan
@deconstructible
dekorator.Pemakaian:
sumber