Я пытаюсь сделать вид, где пользователь может редактировать записи БД через форму в шаблоне. Я искал много веб-страниц (и Django docs), где они учат, как делать эти представления, но они всегда используют «id», который Django генерирует для каждой модели. В этой конкретной модели я должен использовать AutoField для переопределения «id». Есть ли способ использовать этот AutoField как «id» записи с Django?Django: Edit ModelForm с помощью AutoField
Вот моя полная модель:
class T031003 (models.Model):
C003IDCD = AutoField(primary_key=True)
C003INST = models.IntegerField(unique=True) #usar AutoSlug
C003TPCD = models.CharField(max_length=1)
C003CHCD = models.CharField(max_length=14)
C003MTR = models.CharField(max_length=30, blank=True, null=True)
C003CTCD = models.CharField(max_length=3)
C003RZSC = models.CharField(max_length=60, blank=True, null=True)
C003EML = models.EmailField(max_length = 254, blank=True, null=True)
C003LOGA = models.CharField(max_length=20)
C003LOGB = models.DateTimeField()
C003LOGD = models.CharField(max_length=15, blank=True, null=True)
C003LOGF = models.CharField(max_length=20, blank=True, null=True)
def __unicode__(self):
return '%s' % self.C003MTR
class T031003Form(ModelForm):
class Meta:
model = T031003
ordering = ["-C003MTR"]
exclude = ('C003LOGA','C003LOGB','C003LOGD','C003LOGE','C003LOGF')
А вот вид я пытался сделать, но это дает мне ошибку «Нет T031003 не соответствует данному запросу.» и это правильно, поскольку в таблице нет «идентификатора»:
def t031003form_edit(request, id=None):
pin = get_object_or_404(T031003, pk=id)
form = T031003Form(request.POST or None, instance=pin)
if request.method == 'POST':
if form.is_valid():
form = form.save(False)
form.C003LOGA = request.user
form.C003LOGB = datetime.date.today()
form.C003LOGD = request.META['REMOTE_ADDR']
form.C003LOGF = request.META['USERDOMAIN']
form.save()
form = T031003Form()
else:
return HttpResponseRedirect('/erro/')
return render_to_response('T031003Form_edit.html', {'form': form,}, context_instance=RequestContext(request))
Любая помощь будет очень признательна!
Просто мелочь дополнительно: это «id_auto» - это значение, которое вы пройдете по URL-адресу. В вашем urls.py вы получите 'url (r '^ t031002form_edit/(? P \ d +) /', 'Mod031.views.t031002form_edit')' и в шаблоне вы передадите что-то вроде:/t031002form_edit/1/Это приведет вас к записи в БД, где «id» равно 1 (а идентификатор в этом случае - AutoField). –