Bob*_*Bob 3 django django-models django-forms django-views
我有一个关于我正在创建的新项目的问题.简而言之,该网站拥有用户帐户,每个用户都可以创建一个简单的段落.表单运行正常,但我似乎无法将用户的ID分配给已保存的表单.
model.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='')
Run Code Online (Sandbox Code Playgroud)
forms.py
class ThoughtForm(ModelForm):
class Meta:
model = Thoughts
fields = ['title', 'description']
Run Code Online (Sandbox Code Playgroud)
views.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)
Run Code Online (Sandbox Code Playgroud)
每当我尝试添加"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='')
Run Code Online (Sandbox Code Playgroud)
你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
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1633 次 |
| 最近记录: |