Ich erstelle eine App, mit der Benutzer Dateien in einen AWS S3-Bucket hochladen können. Jeder Benutzer erhält bei der Anmeldung einen Ordner im Ordner media
, basierend auf dessen userID
Wie erlaube ich meinen Benutzern, ihre Projekte in ihre Ordner hochzuladen? Die Dateien werden nur gut hochgeladen, aber in einen Ordner mit dem Namen None
. Das scheint eine einfache Antwort zu sein, aber ich kann es nicht finden. Hier ist meine views.pyIn benutzerdefinierte Ordner hochladen Django
def new(request):
title = "Add New Project"
if not request.user.is_authenticated():
raise Http404
form = ProjectForm(request.POST or None, request.FILES or None)
if form.is_valid():
instance = form.save(commit=False)
instance.fileLocation = request.user.id
instance.user = request.user
instance.save()
return redirect("/dashboard/")
context = {
"form": form,
"title": title,
}
Hier ist mein models.py
from django.db import models
from django.conf import settings
# Create your models here.
class Project(models.Model):
fileLocation = None
user = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True)
title = models.CharField(max_length=200)
description = models.TextField()
sell = models.BooleanField(default=False)
timestamp = models.DateTimeField(auto_now_add=True)
image = models.FileField(upload_to=fileLocation, null=True, blank=True)
def __str__(self):
return self.title
Und hier ist mein forms.py (für alle Fälle)
from django import forms
from .models import Project
from django.contrib.auth.models import User
class ProjectForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(ProjectForm, self).__init__(*args, **kwargs)
self.fields['image'].required = True
class Meta:
model = Project
fields = [
'title',
'description',
'image',
'sell',
]
Könnten Sie bitte etwas genauer sein – pepper5319
leid, dass ich nicht so detailliert war, aber diese Frage wurde bereits auf verschiedene Weise beantwortet worden. Können Sie diesen Link für ein doppeltes Problem überprüfen: [link] (http://stackoverflow.com/questions/5135556/dynamic-file-path-in-django). Vielleicht möchten Sie auch ImageField direkt anstelle von FileField verwenden, um die Bilddimensionen, Dateitypenüberprüfungen usw. besser zu handhaben. –
Okay cool. Vielen Dank – pepper5319