我正在构建一个模板,其中表单填充了来自数据库的数据,用户可以更新更改。问题是,我的代码正在创建一个新记录而不是更新现有记录。
模特:
class Users(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
email = models.CharField(max_length=100)
class Event(models.Model):
event_admin = models.ForeignKey(Users)
event_name = models.CharField(max_length=50)
event_location = models.CharField(max_length=50)
event_date = models.DateField()
event_time = models.TimeField()
event_notes = models.CharField(max_length=200)
查看:
def edit_event(request, id):
if request.method == 'POST':
e1 = CreateEventForm(request.POST)
if e1.is_valid():
e1 = e1.save(commit=False)
temp = get_object_or_404(Event, id = id)
admin = temp.event_admin
e1.event_admin = admin
e1.save()
eventID = e1.id
return HttpResponseRedirect('/app/' + str(eventID))
else:
event = CreateEventForm(instance=get_object_or_404(Event, id=id))
return render(request, 'edit_event.html', {'event':event})
我相信我的问题是我不是更新当前对象,而是建立一个新对象。但是,在使用现有记录时,我在分配event_admin所需的外键时遇到问题。
答案 0 :(得分:3)
您应该将instance
参数传递给构造函数表单:
event = get_object_or_404(Event, id=id)
form = CreateEventForm(request.POST, instance=event)
if form.is_valid():
form.save()
return HttpResponseRedirect('/app/' + str(event.id))
为什么要重新分配event_admin
个实例中的Event
字段?