我有一个回复类:
class Reply(models.Model):
reply_to = models.ForeignKey(New)
creator = models.ForeignKey(User)
reply = models.CharField(max_length=140,blank=False)
重播表格:
class ReplyForm(ModelForm):
class Meta:
model = Reply
fields = ['reply']
其中 New 是 Post 类(包含用户帖子) 和一个 View
def save_reply(request):
#u = New.objects.get(pk=id)
if request.method == 'POST':
form = ReplyForm(request.POST)
if form.is_valid():
new_obj = form.save(commit=False)
new_obj.creator = request.user
new_obj.reply_to = form.reply_to
# reply_to_id = u
new_post = New(2) #this works hardcoded, but how can i get the blog New post #id, as a parameter, instead?
new_obj.reply_to = new_post
new_obj.save()
return HttpResponseRedirect('.')
其他:
表单 = ReplyForm()
返回 render_to_response('replies/replies.html', {
“形式”:形式,
},
context_instance=RequestContext(请求))
其中created_by属于New类,代表帖子的创建者(待回复)
如何将当前帖子分配给其下的回复?
提前致谢!
最佳答案
我可能错过了一些东西,但是 reply_to
需要新模型的实例。 New.id
对我来说不像一个?
new_obj.reply_to = New.id
此时您是否有可以分配的新模型实例?
啊,我发现你已经调整了问题
如果您没有新模型的实例,则需要创建一个
new_post = New(whatever, goes, here)
new_post.save()
然后将其分配给reply_to
new_obj.reply_to = new_post
或类似的。
编辑
在不确切知道ReplyForm
的情况下,我有点猜测,但大概它是基于Reply
对象的,让用户以某种方式选择reply_to字段?
假设表单的reply_to变量已填充且正确,我认为您应该能够执行以下操作:
form = ReplyForm(request.POST)
if form.is_valid():
new_obj = form.save(commit=False)
new_obj.creator = request.user
new_obj.reply_to = form.reply_to
new_obj.save()
事实上,由于它是外键,new_obj = form.save(commit=False)
可能已经为您设置了 .reply_to ? Django Model Forms文档可能会有所帮助。
关于database - django 我无法使用 2 个外键保存表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2916741/