У меня есть форма модели Django.Одним из полей в форме является ImageField с заданным путем к определенной папке для хранения изображений.Я хочу получить изображение, которое отправлено с формой и именем изображения.Я хочу, чтобы само изображение сохранялось в папке, а имя сохранялось в базе данных, чтобы иметь возможность получать его, когда мне это нужно.Я огляделся по сторонам и не нашёл подходящих ответов для решения этой проблемы.Вот мой код:
Models.py:
user = models.ForeignKey(User, on_delete=models.CASCADE)
profile_pic = models.ImageField(upload_to='static/images/profile_pics/', height_field=500, width_field=500, max_length=100)
bio = models.TextField()
views.py:
if request.method == "POST":
form = ProfileForm(request.POST)
if form.is_valid():
cd = form.cleaned_data
first_name = cd['first_name']
last_name = cd['last_name']
profile_pic = cd['profile_pic']
bio = cd['bio']
new_profile = Profile.objects.create(
first_name = first_name,
last_name = last_name,
bio = bio,
profile_pic = profile_pic,
dob = dob,
)
это то, что отправляется в запросе:
Вот прямой путь, по которому я хочу сохранить изображения.
ОБНОВЛЕНИЕ:
вот модель models.py:
class Profile(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
profile_pic = models.ImageField(upload_to='images/profile_pics/', max_length=100)
bio = models.TextField()
dob = models.DateField(auto_now=False, auto_now_add=False)
phone = models.IntegerField()
gender = models.CharField(max_length=11)
company = models.CharField(max_length=22)
occupation = models.CharField(max_length=22)
street = models.CharField(max_length=44)
city = models.CharField(max_length=22)
state = models.CharField(max_length=4)
zip_code = models.IntegerField()
group = models.CharField(max_length=22)
premium = models.BooleanField(default=False)
active = models.BooleanField(default=True)
created = models.DateTimeField(auto_now_add=True)
Вот файл forms.py:
class ProfileForm(forms.ModelForm):
first_name = forms.CharField(max_length=22,
label="First Name")
last_name = forms.CharField(max_length=22,
label="Last Name")
dob = forms.DateField(
label='Date of Birth',
widget=forms.widgets.DateInput(attrs={'type':'date'})
)
gender_choices = (('M', 'Male'),
('F', 'Female'),
('O', 'Other'))
gender = forms.TypedChoiceField(
choices = gender_choices,
label='Gender')
class Meta:
model = Profile
fields = ['first_name', 'last_name', 'profile_pic', 'bio', 'dob', 'company',
'occupation', 'gender', 'phone', 'street', 'city', 'state', 'zip_code']
Вотшаблон:
Профиль:
<form method="POST">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" name="complete" value="complete">
</form>