我正在尝试创建一个简单的视图,将模型实例添加到不带表单的不同模型中。
背景: 我无法使用多选小部件,因为iPhone上的IOS7多选选项已被破坏。因此,无论如何,我正在创建一个解决方案实际上是一个更好的体验。
我想要一个接受两个PK的视图。它通过M2M使用子模型的实例更新父模型。但我想在没有表格的情况下这样做。
这是我到目前为止所拥有的:
网址:url(regex=r'^attt/(?P<parent_id>\d+)/(?P<child_id>\d+)/$', view=addChildToParent, name='add_child_to_the_parent',),
查看:
def addChildToParent(request, parent_id, child_id):
"""
This view is about adding children to the parent.
"""
user = get_object_or_404(User, id=request.user.id)
if request.user != user:
return permission_denied(request)
try:
parent = Parent.objects.get(id=request.parent_id)
child = Child.objects.get(id=request.child_id)
parent.parent_children.add(child)
messages.success(self.request, "Your child was added!")
return redirect('parent_overview', pk=parent.id)
except Parent.DoesNotExist:
raise Http404
错误:
addChildToParent() got an unexpected keyword argument 'parent_id'
阅读文档之后,似乎add()
是我应该做的,用新的孩子更新父母和孩子之间的m2m。但它不起作用。实际的add()
没有发生。
关于我做错了什么建议?
感谢。
答案 0 :(得分:0)
当您在网址定义中命名了组时,它们将作为关键字参数传递给视图。如果您重命名视图,它应该可以工作:
def addChildToParent(request, parent_id, child_id):
然后,您可以直接参考这些参数。
答案 1 :(得分:0)
使用.save()
方法保存实际关系。