0
Iveは2日間これをやろうとしています。 1つのイメージファイルをアップロードできるウェブサイトを作成しましたが、同じメインモデルに接続されているものをさらにアップロードできるようにしたいと考えています。 これは私が1つの画像のアップロードのために持っているものです: forms.py:Djangoのインポートフォームから Djangoが複数の画像をアップロードしています
from .models import Exam
class ExamForm(forms.ModelForm):
class Meta:
model = Exam
fields = ['exam_number', 'exam_file']
widgets = {
'exam_number': forms.NumberInput(
attrs={'id': 'exam_number', 'required': True,})
}
Models.py:
from django.db import models
from django.contrib.auth.models import User
from django.template.defaultfilters import slugify
from datetime import datetime
from django.core.validators import MaxValueValidator, MinValueValidator
class Exam(models.Model):
exam_number = models.PositiveIntegerField(validators=[MaxValueValidator(6),MinValueValidator(1)])
exam_path = models.CharField(max_length=255)
exam_file = models.ImageField() #i want to be able to upload more of these
exam_date = models.DateTimeField(auto_now_add=True)
exam_user = models.ForeignKey(User, null=True)
def __str__(self):
return self.exam_path
def __int__(self):
return self.exam_number
views.py:
def create_exam(request, letnik_id, classes_id, subject_id):
response_data = {}
if subject_id in SUBJECTS:
path = letnik_id + '/' + classes_id + '/' + subject_id
form = ExamForm(request.POST or None, request.FILES or None)
if form.is_valid():
exam = form.save(commit=False)
exam.exam_user = request.user
exam.exam_path = path
exam.exam_file = request.FILES['exam_file']
file_type = exam.exam_file.url.split('.')[-1]
file_type = file_type.lower()
if file_type not in IMAGE_FILE_TYPES:
context = {
'error_message': 'error',
}
return Http404("Napaka")
if Exam.objects.filter(exam_path=path, exam_number=exam.exam_number):
context = {
'form': form,
'error_message': 'error',
}
return render(request, 'tests.html', context)
exam.save()
return redirect('subject_id', letnik_id=letnik_id, classes_id=classes_id, subject_id=subject_id)
context = {
"form": form
}
raise Http404("error")
raise Http404("error")
それはファイルのための分離されたモデルを作ることが最善であると聞いたが、私は親(試験)モデルに接続するビューを作る方法を知らない。 ヘルプは高く評価されています。あなたはこの
class ExamFile(models.Model):
file = models.ImageField()
exam = models.ForeignKey(Exam, null=False)
ようになり、別のモデルを作成する必要があり