对于记录:所描述的构造是不可能的。这个
documentation
说:
如果一个模型有一个自动递增的主键,那么这个自动递增的值将在你第一次调用save()时计算并保存为你的对象上的一个属性,因为这个值是由你的数据库而不是由dja来计算的。非政府组织。
由于where表将包含location和thing的主键,因此在向该表添加新行时,它们需要可用。因此,解决方案是不使用通用的CreateView,而是编写自定义视图:
def create(request):
if request.method == 'POST':
form = CreateForm(request.POST)
if form.is_valid():
t = Thing(name = form.cleaned_data['name'])
t.save()
w = Where(
thing = t,
location = form.cleaned_data['location'])
w.save()
return HttpResponseRedirect('/thing/{0}'.format(thing.id))
else:
form = CreateForm()
return render(request, 'create_form.html', {'form': form})