хорошо, поэтому я перехожу к представлению «creation_add», я ввожу значения в поля формы Django, затем отправляю.
Success, создается новая запись о занятости, и страница перезагружается с пустой формой.
Когда я ввожу значения и отправляю второй раз, он обновляется; несмотря на то, что я не передаю экземпляр в форму, и он не связан.
Мне бы хотелось, чтобы вместо этого была создана новая запись о занятости.
Есть предложения? Спасибо за вашу помощь.
--- UPDATE ---
Исходя из ответа Раджива: я не понимаю, откуда Джанго получает UUID предыдущего объекта. Может кто-нибудь объяснить, где в RequestContext эта информация хранится? В форме или данных POST нет поля uuid (pk), и я не могу найти его нигде в RequestContext. Я не передаю экземпляр формы
сценарий ... любое объяснение будет высоко ценится
--- UPDATE ---
Эта проблема, по-видимому, возникает в момент создания Employment в представлении Employment_add.
Пожалуйста, смотрите трассировку pdb под кодом
===MODELS===
###User Model is provided by Django
import uuid
def make_uuid():
return str(uuid.uuid4())
class __base__(models.Model):
uuid = models.CharField(max_length=36, primary_key=True,
default=make_uuid(), editable=False)
#max_length must be 36. uuid4 generates a 36 character key
class Meta:
abstract = True
class Employment(__base__):
user = models.ForeignKey( User, related_name='employment')
### employment related fields - no other PK or FK
===FORM===
class EmploymentForm(ModelForm):
class Meta:
model = Employment
exclude = ('user')
widgets = {
}
===VIEW===
def employment_add(request):
context_instance = RequestContext(request)
u = request.user
if request.method == 'POST':
message=""
form = EmploymentForm(request.POST)
if form.is_valid():
f = form.save(commit=False)
f.user = u
f.save()
message = "Position Added"
form = EmploymentForm()
return render_to_response("employment_add.html", {'form':form, 'message':message}, context_instance)
else:
em = Employment()
#start pdb trace here
form = EmploymentForm(instance=em)
return render_to_response("employment_add.html", {'form': form}, context_instance)
===pdb trace===
(Pdb) em
<Employment: Employment object>
(Pdb) em.uuid
u'260015bc-c2eb-4cc1-9506-75e312027404'
(Pdb) c
[29/Aug/2011 14:15:25] "GET /person/employment/add HTTP/1.1" 200 4425
[29/Aug/2011 14:15:33] "POST /person/employment/add HTTP/1.1" 302 0
<QueryDict: {u'month_start': [u''], u'year_start': [u''], u'year_end': [u''], u'employer': [u'66'], u'details': [u'6'], u'month_end': [u''], u'position': [u'66'], u'csrfmiddlewaretoken': [u'9e9c6b2ac43c370f993cb3f72682c7ea'], u'city_town': [u'']}>
[29/Aug/2011 14:15:33] "GET /person/view?i=1 HTTP/1.1" 200 9255
(Pdb) em
<Employment: Employment object>
(Pdb) em.uuid
u'260015bc-c2eb-4cc1-9506-75e312027404'
(Pdb)