Can';t获取所有者作为我的模型django的外键

Can';t获取所有者作为我的模型django的外键,django,Django,我正在尝试做一个表单,以便用户可以上传视频,问题是我无法获取当前用户或其id作为我的视频模型上的外键 错误:IntegrityError 异常值:(1048,“列'owner\u id'不能为空”) 我怎样才能解决这个问题呢?我看了django文档,但没有找到答案 My models.py: class Videowtm(models.Model): name = models.CharField(max_length=50, blank=True) descriptio

我正在尝试做一个表单,以便用户可以上传视频,问题是我无法获取当前用户或其id作为我的视频模型上的外键

错误:IntegrityError 异常值:(1048,“列'owner\u id'不能为空”)

我怎样才能解决这个问题呢?我看了django文档,但没有找到答案

My models.py:

class Videowtm(models.Model):
      name = models.CharField(max_length=50, blank=True)
      description = models.CharField(max_length=255, blank=True)
      uploaded_at = models.DateTimeField(auto_now_add=True)
      owner = models.ForeignKey(User)
      video = models.FileField(upload_to='videos/')
My forms.py:

class VideowtmForm(forms.ModelForm):
class Meta:
    model = Videowtm
    fields = ('name', 'description', 'video', )
我的看法:

@login_required
def model_form_upload(request):
    if request.method == 'POST':
       form = VideowtmForm(request.POST, request.FILES)
       form.owner = request.user
       if form.is_valid():
          form.save()
          return redirect('home')
    else:
       form = VideowtmForm()
    return render(request, 'model_form_upload.html', {
    'form': form
    })
试试这个:

首先将
blank=True
添加到模型中的所有者:

####如果不在表单字段中包含此字段,则无需使用它。

然后:

视图。py:

@login_required
def model_form_upload(request):
    if request.method == 'POST':
       form = VideowtmForm(request.POST, request.FILES)
       if form.is_valid():
          video = form.save(commit=False)
          video.owner = request.user
          video.save()
          return redirect('home')
    else:
       form = VideowtmForm()
    return render(request, 'model_form_upload.html', {
    'form': form
    })
试试这个:

首先将
blank=True
添加到模型中的所有者:

####如果不在表单字段中包含此字段,则无需使用它。

然后:

视图。py:

@login_required
def model_form_upload(request):
    if request.method == 'POST':
       form = VideowtmForm(request.POST, request.FILES)
       if form.is_valid():
          video = form.save(commit=False)
          video.owner = request.user
          video.save()
          return redirect('home')
    else:
       form = VideowtmForm()
    return render(request, 'model_form_upload.html', {
    'form': form
    })

我像你说的那样修改了,让sameI在这里没有我的笔记本电脑来测试它,但我认为通过创建表单的实例可能会起作用。我将代码(form.save(commit=False)编辑为video=form.save(commit=False))。测试这一个,如果它不工作,我会检查我自己,看看有什么问题。祝你好运。谢谢,这就是问题所在。你不需要设置
blank=True
,因为
所有者
字段未包含在表单中。关键部分是使用
commit=False
保存,设置
所有者
,然后保存。@Alasdair是的,您是正确的。我没有注意到它没有包含在表格中。编辑,谢谢。我按照你说的进行了修改,让sameI没有我的笔记本电脑来测试它,但我认为通过创建表单的实例可能会有用。我将代码(form.save(commit=False)编辑为video=form.save(commit=False))。测试这一个,如果它不工作,我会检查我自己,看看有什么问题。祝你好运。谢谢,这就是问题所在。你不需要设置
blank=True
,因为
所有者
字段未包含在表单中。关键部分是使用
commit=False
保存,设置
所有者
,然后保存。@Alasdair是的,您是正确的。我没有注意到它没有包含在表格中。谢谢。