Ошибка ключа django - передача дополнительных материалов с формой django - PullRequest
0 голосов
/ 24 января 2020

У меня есть такие модели:

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'

Так что я могу сделать? Кто-нибудь может мне помочь? Любая помощь будет высоко ценится.

...