Захват нескольких изображений из шаблона [закрыто]Python

Программы на Python
Anonymous
Захват нескольких изображений из шаблона [закрыто]

Сообщение Anonymous »

Этот код связан с запросом рекомендации по продукту, в котором пользователь может загрузить столько фотографий, сколько пожелает, для своего запроса рекомендации. Есть две формы: одна для фотографий, другая для описания и номера запрашиваемого товара. Когда я хочу иметь несколько изображений, что мне делать, потому что таким образом сохраняется только изображение, и оно связано с последней формой, загружаемой Ajax.
модели
class Reject(models.Model):
product = models.ForeignKey(Product, related_name='rejects', on_delete=models.CASCADE)
quantity = models.IntegerField()
rejecter = models.ForeignKey(ShopUser, related_name='rejects', on_delete=models.CASCADE)
description = models.TextField(max_length=1000)
verify = models.BooleanField(default=False)
created = jmodels.jDateTimeField(auto_now_add=True)

class Meta:
ordering = ['-created']
indexes = [
models.Index(fields=['-created'])
]

def __str__(self):
return f'{self.product} مرجوع شد توسط {self.rejecter}'

def get_total_cost(self):
return self.product.discount_price * self.quantity

def image_sorter(instance, filename):
return f"rejected_product_images/{instance.created.year}/{instance.created.month}/{instance.created.day}/{filename}"

class Image(models.Model):
rejected_product = models.ForeignKey(Reject, related_name='images', on_delete=models.CASCADE)
created = jmodels.jDateTimeField(auto_now_add=True)
file = ResizedImageField(upload_to=image_sorter)

class Meta:
ordering = ['-created']
indexes = [
models.Index(fields=['-created']),

формы
class RejectForm(forms.ModelForm):

class Meta:
model = Reject
fields = ['quantity', 'description']
widgets = {
'quantity': forms.NumberInput(attrs={'class': 'quantity-of-reject-input'}),
'description': forms.Textarea(attrs={'class': 'description-of-reject-input'})
}
labels = {
'quantity': "تعداد کالاهای ارجاعی",
'description': "توضیحات دلیل ارضاع"
}

class RejectImageForm(forms.Form):
image = forms.FileField(widget=forms.FileInput(attrs={'class': 'reject-image-input'}),label=None)

шаблон
{% extends 'parents/base_template.html' %}
{% block title %} Reject product{% endblock %}
{% block body %}

{% csrf_token %}

{{ image_form.as_p }}

اضافه کردن تصویر
{{ texts_form.as_p }}





$(document).ready(function(){
$('#add-another-image').click(function (){
$.ajax({
type: 'GET',
url: '{% url 'ordering:add_image' %}',
datatype: 'html',
success: function(data){
$('.images').append(data);
}
});
});
});

{% endblock %}


шаблон ajax
{{ image_form.as_p }}

просмотр
@login_required
def reject_product(request, product_id=None):
if request.headers.get('x-requested-with') == "XMLHttpRequest":
image_form = RejectImageForm()
return render(request, 'ajax/ajax_reject_image_form.html', {'image_form': image_form})

user = request.user
product = Product.objects.get(id=product_id)

if request.method == 'POST':
texts_form = RejectForm(data=request.POST)
image_form = RejectImageForm(data=request.POST, files=request.FILES)

if texts_form.is_valid() and image_form.is_valid():
rejected_product = texts_form.save(commit=False)
rejected_product.rejecter = user
rejected_product.product = product
rejected_product.save()
Image.objects.create(rejected_product=rejected_product, file=image_form.cleaned_data['image'])
rejected_product.save()
return redirect('account:orders_status', 'rejected')

else:
texts_form = RejectForm()
image_form = RejectImageForm()
context = {
'texts_form': texts_form,
'image_form': image_form,
}
return render(request, 'forms/reject.html', context)

Я пробую это
Image.objects.create(rejected_product=rejected_product, file=request.FILES['image'])

и это
for image in request.FILES:
Image.objects.create(rejected_product=rejected_product, file=image)


Подробнее здесь: https://stackoverflow.com/questions/786 ... e-template

Вернуться в «Python»