У меня есть такие модели:
class Photo(models.Model):
title = models.CharField(max_length=255, blank=True)
file = models.FileField(default='default.jpg')
page = models.ForeignKey(Page, on_delete=models.CASCADE)
class Page(Group):
name = models.IntegerField()
в моем forms.py, чтобы создать форму для публикации нескольких изображений, я создал это: я также перезаписываю get_form_kwargs для передачи вещи 'page' с помощью форма, как вы можете видеть, что модель Photo имеет страницу иностранного ключа.
class PhotoForm(forms.ModelForm):
def get_form_kwargs(self):
kwargs = super(PhotoForm, self).get_form_kwargs()
kwargs['page'] = Page.objects.get(pk=self.GET['pk'])
return kwargs
class Meta:
model = Photo
fields = ('file', )
В моем основном urls.py я говорю как:
path('page/<int:pk>/photos/', include('photos.urls'))
и в URL-адресах приложений для фотографий. py, я говорю:
path('progress-bar-upload/', views.ProgressBarUploadView.as_view(), name='progress_bar_upload')
и в моих фотографиях apps views.py Я говорю:
class ProgressBarUploadView(View):
model = Photo
def get(self, request, **kwargs):
photos_list = Photo.objects.all()
page = get_object_or_404(Page, page=self.kwargs['page'])
return render(self.request, 'photos/progress_bar_upload/index.html', {'photos': photos_list, 'page':page})
def post(self, request):
time.sleep(1)
form = PhotoForm(self.request.POST, self.request.FILES)
if form.is_valid():
photo = form.save()
data = {'is_valid': True, 'name': photo.file.name, 'url': photo.file.url}
else:
data = {'is_valid': False}
return JsonResponse(data)
Затем, когда в моем html я вызываю страницу,
{{page}}
Затем, когда я go на 'localhost: / page / 1 / photos / progress-bar-upload /', я получаю эту ошибку:
KeyError at /page/7/photos/progress-bar-upload/
'page'
Так что я могу сделать? Кто-нибудь может мне помочь? Любая помощь будет высоко ценится.