Ich versuche, meine Uploads so einzurichten, dass wenn Benutzer Joe eine Datei hochlädt, diese an MEDIA_ROOT / joe gesendet wird, anstatt dass alle Dateien an MEDIA_ROOT gesendet werden. Das Problem ist, dass ich nicht weiß, wie ich das im Modell definieren soll. So sieht es derzeit aus:
class Content(models.Model):
name = models.CharField(max_length=200)
user = models.ForeignKey(User)
file = models.FileField(upload_to='.')
Also, was ich will, ist anstelle von '.' Geben Sie als upload_to den Namen des Benutzers an.
Ich verstehe, dass Sie ab Django 1.0 Ihre eigene Funktion definieren können, um upload_to zu verarbeiten, aber diese Funktion hat keine Ahnung, wer der Benutzer sein wird, also bin ich ein bisschen verloren.
Danke für die Hilfe!
quelle
os.path.join
stattdessen verwenden'/'.join
, um sicherzustellen, dass es auch auf Nicht-Unix-Systemen funktioniert. Sie mögen selten sein, aber es ist eine gute Praxis;)Das hat wirklich geholfen. Aus Gründen der Kürze habe ich mich für Lambda entschieden:
quelle
pk
vor dem Speichern. Es funktioniert nur für Updates, nicht für Kreationen (Einfügungen).migrations
Betrieb, da es gemäß den DokumentenEin Hinweis zur Verwendung des pk-Werts des 'Instanz'-Objekts. Laut Dokumentation:
Daher hängt die Gültigkeit der Verwendung von pk davon ab, wie Ihr bestimmtes Modell definiert ist.
quelle
Wenn Sie Probleme mit Migrationen haben, sollten Sie wahrscheinlich
@deconstructible
Decorator verwenden.Verwendung:
quelle