将登录用户附加到基于类的窗体和模型



views.py

from django.shortcuts import render
from django.http import HttpResponseRedirect
from .forms import UploadDocument
from .models import Document

def upload_document(request):
if request.method == 'POST':
form = UploadDocument(request.POST, request.FILES)
if form.is_valid():
# file is saved
instance = Document(passport=request.FILES['passport'])
instance.save()
instance = Document(id_license=request.FILES['id_license'])
instance.save()
instance = Document(User=request.user)
instance.save()
# needs to add instance of User from cache
return HttpResponseRedirect('/success/url/')
else:
form = UploadDocument()
return render(request, 'verification/verificate.html', {'form': form})

forms.py

from django import forms

class UploadDocument(forms.Form):
passport = forms.ImageField()
id_license = forms.ImageField()

models.py

from django.conf import settings
from django.db import models

class Document(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,)
passport = models.ImageField()
id_license = models.ImageField()

异常值:非空约束失败: verification_document.user_id

我想创建一个允许上传文档的表单,以进行验证。如何附加已登录的用户?

试试这段代码:

views.py

def upload_document(request):
if request.method == 'POST':
form = UploadDocument(request.POST, request.FILES)
if form.is_valid():
instance=Document()
instance.passport=request.FILES['passport']
instance.id_license=request.FILES['id_license']
instance.User=request.user
instance.save()
return HttpResponseRedirect('/success/url/')
else:
form = UploadDocument()
return render(request, 'verification/verificate.html', {'form': form})

相关内容

最新更新