Can';t获取所有者作为我的模型django的外键
我正在尝试做一个表单,以便用户可以上传视频,问题是我无法获取当前用户或其id作为我的视频模型上的外键 错误:IntegrityError 异常值:(1048,“列'owner\u id'不能为空”) 我怎样才能解决这个问题呢?我看了django文档,但没有找到答案 My models.py: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
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是的,您是正确的。我没有注意到它没有包含在表格中。谢谢。