我有这样的模特:
User:
#somefields
apps = models.ManyToManyField(App)在这里,用户最初是在注册期间创建的。他在一个单独的页面中将多个应用程序链接到多个应用程序,用户只选择(多个)应用程序,而不选择其他字段。
在Django中填充应用程序的最佳方法是什么?
例如,如果我们也可以创建用户,我们可以简单地使用modelform,其中.save(commit=False)将创建用户,.save_m2m()将链接应用程序。但在这里,我们不需要创建用户。我们将有用户已经,我们只需要添加应用程序。怎么做到的?
新增加的细节:我知道如何处理正常的“表单”和正常的web方式。但我想写质量代码所以我想知道。如果使用普通形式没有什么问题,那么就可以了。
发布于 2015-06-20 19:47:55
有多种方法可以做到这一点,但例如:
class UserAppForm(ModelForm):
class Meta:
model = User
fields = ['apps']在您看来,您可以配置路由,以便:
例如:
def user_add_app(request, pk):
user = get_object_or_404(User, pk=pk)
if request.method == "POST":
form = UserAppForm(request.POST, instance=user)
if form.is_valid():
user = form.save()
return HttpResponseRedirect(<some redirect>)
else:
form = EmployeeForm(instance=user)
return render(request, "<some html file>", {'form': form})发布于 2015-06-19 12:16:37
也许我没有完全理解这个问题(如果不是这样的话,请澄清一下),但是在同一个模型上有两种形式是没有问题的:
它回答问题了吗?
发布于 2015-06-19 12:22:23
您可以使用ModelForm和User字段创建一个User表单。现在,在创建表单时,为User设置一个初始值:
form = AppForm(initial={'user': 1})https://stackoverflow.com/questions/30937801
复制相似问题