database - django 我无法使用 2 个外键保存表单

标签 database django forms foreign-keys

我有一个回复类:

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/

相关文章:

python - django get_or_create 取决于自定义管理器方法的结果

python - 如何在用户输入错误时重新加载具有无效表单的页面

MySQL 将枚举值转换为整数值

html - 如何强制 HTML 表单输入格式?

mysql - 对于这个具体问题,我似乎无法在网上找到令人满意的答案, "In MySQL do colums that have ' NULL'浪费内存”?

c# - 需要查询 SQL Server 方面的帮助

mysql - 从 SQL 查询获取数据,其中另一列是唯一的

java - SQLite,如何获取数据库中的所有表名?

c# - 如何为动态添加的按钮创建方法。 ASP.NET C#

javascript - 如何使用 Symfony2 中的警报消息通过 javascript 显示 html twig 表单字段值?