gpt4 book ai didi

python - django 不会在我的模型中存储引用为外键的 authUser

转载 作者:太空宇宙 更新时间:2023-11-04 04:00:55 24 4
gpt4 key购买 nike

我创建了我的模型,将 authUser 引用为外键,然后使用 django Form API 我试图将数据存储到我的数据库中,但我的用户字段仍然为空。

我使用内置的 FORM API 来接收上传的文件,在存储我的文件之前,我还存储了文件名。我试图对 userField 做同样的事情,但 django 抛出 ValueError。

Models.py

class sample(models.Model):
user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True ,default=1)
submit_time = models.DateTimeField(auto_now=True)
file_name = models.CharField(max_length=1024)
score = models.FloatField(default=0.0)
is_pending = models.BooleanField(default=True)
is_complete = models.BooleanField(default=False)
json_URL = models.FilePathField()
sample = models.FileField(upload_to='samples/')

Views.py

@login_required
def upload(request):
if request.method == 'POST':
file = request.FILES['sample']
form = SampleForm(request.POST, request.FILES)
if form.is_valid():
new_sample = form.save(commit=False)
new_sample.file_name = file.name
new_sample.user = User.id #throws ValueError Cannot assign "sample.user" must be a "User" instance.
form.save()
return redirect('reports')
else:
print("form is invalid")
else:
form = SampleForm()
if request.method == 'GET':
return render(request, 'upload2.html', {'form': form})

forms.py

class SampleForm(forms.ModelForm):
class Meta:
model =sample
fields=('sample',)

我的目标是将用户 ID 保存在我的数据库中,以便我知道是谁上传了文件。

最佳答案

您应该使用 request.usernew_sample.user 对象,或 request.user.id(或 request. user.pk) 到 request.user_id 属性,例如:

# …

new_sample = form.save(commit=False)
new_sample.file_name = file.name
new_sample.user = <b>request.user</b>
form.save()
return redirect('reports')

# …

通过使用 User.id,您可以获得对 User model 字段的引用,而不是对象。

关于python - django 不会在我的模型中存储引用为外键的 authUser,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58362876/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com