gpt4 book ai didi

database - django 我不能用 2 个外键保存表单

转载 作者:搜寻专家 更新时间:2023-10-30 20:21:49 24 4
gpt4 key购买 nike

我有一个回复类:

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/

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