首页 > 解决方案 > 关键错误 django - 使用 django 表单传递其他内容

问题描述

我有这样的模型:

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 以通过表单传递“页面”事物,因为您可以看到 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'))

在照片应用程序 urls.py 中,我说:

path('progress-bar-upload/', views.ProgressBarUploadView.as_view(), name='progress_bar_upload')

在我的照片应用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}}

然后,当我转到 'localhost:/page/1/photos/progress-bar-upload/' 时,我收到此错误:

KeyError at /page/7/photos/progress-bar-upload/
'page'

那么我能做什么呢?有人能帮我吗?任何帮助将不胜感激。

标签: djangodjango-forms

解决方案


推荐阅读