【发布时间】:2022-01-20 19:35:57
【问题描述】:
又是美好的一天, 所以我有一个表单,用户可以添加多个标题。每次提交都会创建一个新对象,其中包括书面标题和编写它的用户(提交表单)。
我试过了,但我不知道在 NewTitle.objects.create(title=title, ...) 中添加什么
\views.py
def title_view(request):
try:
profile = request.user.newtitle
except NewTitle.DoesNotExist:
profile = NewTitle(user=request.user)
if request.method == 'POST':
form = NewTitleForm(request.POST, instance=profile)
if form.is_valid():
title = form.cleaned_data["title"]
NewTitle.objects.create(title=title) #in the () I have to add the user= aswell
return redirect('/another')
else:
form = NewTitleForm(instance=profile)
return render(request, 'test.html', {'form': form, 'profile': profile})
\models.py
class NewTitle(models.Model):
user = models.OneToOneField(
User, default=None, null=True, on_delete=models.CASCADE)
title = models.CharField(max_length=200)
我正在使用基本的用户模型。目前,用户可以提交表单,新对象将仅使用给定的标题创建,但没有编写它的用户,因为我只是添加了 title=title 而不是 user=...
有什么想法吗?
【问题讨论】:
-
我的老问题和你的回答把我推向了正确的方向,但问题仍然没有解决
-
一个
user只能有一个NewTitle? -
我不知道,一个用户应该可以有很多标题。每次用户提交表单时都会创建一个新对象。我必须使用类似 manytoone 的东西吗?
-
是的,那是
ForeignKey。 -
但是您的观点似乎表明您想编辑现有的
NewTitle,而不是创建一个新的?否则我不清楚你为什么用instance=profile构造表单。