终止两个对象,而不是Django中的一个对象



我想创建一个从其他模型传输一些数据的对象。它工作得很好,但我没有创建一个模型对象,而是创建了两个对象。

我创建了一个对象并尝试修改它,但它保存了两个创建和修改的对象。我只想保存一个已修改的对象。我正在使用向我建议的方法:Django实例的模型形式

视图

topic = Topic.objects.get(id=pk)
room = Room.objects.create(topic=topic)
form = RoomForm(request.POST, instance=room)
if request.method == 'POST':
if form.is_valid():
room = form.save(commit=False)
room.host=request.user
room.save()
return redirect('home')

不要自己创建对象;让表格来做这个。使用您的方法,您可以在GET请求中创建一个,在POST请求中创建:

def my_view(request, pk):
topic = Topic.objects.get(id=pk)
# no create
if request.method == 'POST':
form = RoomForm(request.POST)
if form.is_valid():
form.instance.topic_id = pk
form.instance.host = request.user
form.save()
return redirect('home')
else:
form = RoomForm()
# …

如果您想修改之前创建的对象,请执行此操作。从您的模型中搜索并更新您想要的字段

Topic.objects.filter(id=pk(.update(fields=something(

那是兄弟。如果你想确保你选择的对象是正确的,请记住使用

最新更新