Мне нужно хранить 3 изображения из формы в базу данных. Я вижу, что изображение сохранено, но только 1 не все 3 Я загружаю при сохранении формы.
Я прилагаю все фрагменты кода, используемые в приложении для хранения изображений в базе данных через форму.
Любая помощь приветствуется!
Спасибо
#models.py
from django.db import models
# Create your models here.
class Post(models.Model):
# post_img = models.ImageField(upload_to='images/', blank=True, null=True)
type = (
('machine', "MACHINE"),
('accessory', "ACCESSORY")
)
post_types = models.CharField(max_length=10, choices=type, default='machine')
post_title = models.CharField(max_length=100)
post_desc = models.TextField(max_length=1000)
name = models.CharField(max_length=50)
number = models.BigIntegerField()
altnumber = models.BigIntegerField()
email = models.EmailField()
def __str__(self):
return self.post_title
class Images(models.Model):
post = models.ForeignKey('Post', on_delete=models.PROTECT)
image = models.ImageField(upload_to='images/', blank=True, null=True)
def __str__(self):
return self.post.post_title + " Image"
# return self.post_title + " Image"
и
#forms.py
from django import forms
from .models import Post
class PostForm(forms.ModelForm):
class Meta:
model = Post
fields = "__all__"
&
#views.py
from django.shortcuts import render, reverse, redirect
from .forms import PostForm
from .models import Post, Images
from django.forms import modelformset_factory
# Create your views here.
def index(request):
post = Post.objects.all()
return render(request, 'index.html', {'post': post})
def addpost(request):
ImageFormset = modelformset_factory(Images, fields=('image', ), extra=3)
if request.method == 'POST':
form = PostForm(request.POST)
formset = ImageFormset(request.POST or None, request.FILES or None)
print("The initialized : ImageFormset object => %r", ImageFormset)
print ("----------------------------------------------------------------------------------------------------")
print("Form entered data => %r", formset)
if form.is_valid() and formset.is_valid():
post = form.save(commit=False)
post.save()
for f in formset:
try:
photo = Images(post=post, image=f.cleaned_data['image'])
print ("1----------------------------------------------------------------------------------------------------")
print("photos %r =>", photo)
print ("----------------------------------------------------------------------------------------------------")
print("imageformset %r => ", ImageFormset)
photo.save()
return redirect(reverse('index:index'))
except Exception as e:
break
else:
form = PostForm()
formset = ImageFormset(queryset=Images.objects.none())
context = {
'form': form,
'formset': formset,
}
return render(request, 'addpost.html', context)
и вот html file
{% extends 'base.html' %}
{% block title %} Machine Suchers | Home {% endblock %}
{% block content %}
<div class="container">
<h1 class="text-center mt-5 mb-5">Add post Details</h1>
<div class="row justify-content-center">
<div class="col-md-6">
<form enctype="multipart/form-data" action="/add_post/" method="post">
{% csrf_token %}
{{ formset.as_p }}
{{ form.as_p }}
<input type="submit" value="Save" class="btb btn-outline-primary">
</form>
</div>
</div>
</div>
{% endblock %}
Я запустил код и вижу сообщения журнала. Я не уверен, правильно ли я зарегистрировал сообщения журнала для объекта изображения.
журнал сообщений при выполнении кода с тремя изображениями