gpt4 book ai didi

django - 使用用户 ID 保存模型表单?

转载 作者:行者123 更新时间:2023-12-01 09:18:56 25 4
gpt4 key购买 nike

我有一个关于我正在创建的新项目的问题。简单来说,网站有用户账号,每个用户都可以创建一个简单的段落。该表单运行良好,但我似乎无法将用户 ID 分配给保存的表单。

模型.py

class UserProfile(models.Model):
user = models.OneToOneField(User)

class Thoughts(models.Model):
user = models.ForeignKey(UserProfile, null=True)
title = models.CharField(max_length=150, default='')
description = models.CharField(max_length=5000, default='')

表格.py
class ThoughtForm(ModelForm):
class Meta:
model = Thoughts
fields = ['title', 'description']

View .py
@login_required(login_url='sign_in')
def add_thought(request):
context = {}
populateContext(request, context)

user_details = UserProfile.objects.get(user=request.user)
context.update(user_details=user_details)

if request.method == 'POST':
new_thought_form = ThoughtForm(request.POST)

if new_thought_form.is_valid():
new_thought_form.save()
return HttpResponse('Hurray, saved!')
else:
new_thought_form = ThoughtForm()


c = {'new_thought_form': new_thought_form,}
c.update(csrf(request))

return render_to_response('lala/add_new_thought.html', c)

每当我尝试添加“instance=user_details.id”时,它都会说“int”对象没有“_meta”属性。有什么想法吗?

最佳答案

您可以通过删除 UserProfile 来简化模型。模型:

# models.py

class Thoughts(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
title = models.CharField(max_length=150, default='')
description = models.CharField(max_length=5000, default='')

您的 forms.py看起来挺好的。

改变你的看法:
# views.py     

@login_required(login_url='sign_in')
def add_thought(request):
if request.method == 'POST':
form = ThoughtForm(request.POST)
if form.is_valid():
thought = form.save(commit=False)
thought.user = request.user
thought.save()
return HttpResponse('Hurray, saved!')
else:
form = ThoughtForm()
return render(request, 'lala/add_new_thought.html', {
'form': form
})

关于django - 使用用户 ID 保存模型表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37773803/

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