я не знаю, что делать, я "пустой" ...
У меня есть функция, которая запрашивает базу данных, используя request.GET и заполняет форму, вы можете изменить содержимое и сохранить обновление информации. Проблема в том, что id не передается функции, и Django выбирает INSERT вместо UPDATE, вот код:
Посмотрите на этот беспорядок:
def meet_save(request):
if request.method == 'POST':
form = MeetingForm(request.POST)
if form.is_valid():
creator = get_object_or_404(Submitter, name=request.user)
meeting = Meeting(creator=creator)
meeting.ave = form.cleaned_data['ave']
meeting.st = form.cleaned_data['st']
meeting.date = form.cleaned_data['date']
#it is supposed to work with save()
#i tryed meeting.save(force_update=True)
#and i figured out the id is missing
meeting.save()
for people in form.cleaned_data['people']:
meeting.people.add(people)
return HttpResponseRedirect('/meeting/register/')
elif request.GET.has_key('meeting'):
id = request.GET['meeting']
people = ''
ave = ''
st = ''
date = ''
try:
meeting = meeting.objects.get(id=id)
#id = unicode(request.GET['meeting'])
#Have tryed different ways with no luck
id = request.GET['meeting']
ave = meeting.ave
st = meeting.st
date = meeting.date
except:
pass
form = MeetingForm({
'id':id, 'ave' : ave, 'st' : st,'date' : date
})
else:
form = MeetingForm()
variables = RequestContext(request, {
'form': form,
})
return render_to_response('meeting/meeting_save.html', variables)
Он получает собрание = идентификатор, переданный в запросе GET (например, / meeting / register / meeting = 3), и форма получает данные, но при сохранении создает новую строку вместо ее обновления, но она не работает как это в Django, может быть PHP, но не в Django !!!
Это правильный код для Джанго:
def meet_save(request):
pk=request.GET['meeting'] #get the meeteng id from url
form = MeetingForm(request.POST)
if form.is_valid():
meeting, created = Meeting.objects.get_or_create(id=pk)
meeting.ave = form.cleaned_data['ave']
meeting.st = form.cleaned_data['st']
meeting.date = form.cleaned_data['date']
meeting.people = form.claned_data['people']
meeting.save()
#for people in form.cleaned_data['people']:
#meeting.people.add(people)
return HttpResponseRedirect('/meeting/register/')
else:
meeting = get_object_or_404(Meeting, pk=request.GET['meeting'])# this is the id passed
form = MeetingForm(instance=meeting)
variables = RequestContext(request, {
'form': form,
})
return render_to_response('meeting/meeting_save.html', variables)
Полагаю, mess
, возможно, сработает, но я исправил мой шаблон , потому что POST был такой: method = POST action = "." и я понял, что URL-адрес в порядке, когда я попадаю на страницу, но при отправке данных в сообщении он очищает meeting = id , и я думаю, что это был настоящий Ужас !! я изменил его на action = "" Я не видел anithing в документации об этом, и я прочитал, что это то же самое, знайте, что это не так.
Джанго качается !!!