0

オブジェクトを更新しようとしていますが、「主キーは一意である必要があります」というメッセージが表示されます...エントリのモデル:

    class Entry(models.Model):
      title = models.CharField(max_length=250)
      author = models.ForeignKey(User, editable=False)
      status = models.IntegerField(choices=data_types.STATUS_CHOICES,
      default = data_types.STATUS_DRAFT)

そしてビュー:

@login_required
def edit_entry(request, entry_id='0'):
  message = ""
  entry = get_object_or_404(Entry.objects, pk=entry_id)
  if request.method == 'GET':
    form = EntryForm(instance=entry)
  else :
    if request.method == 'POST':
      if request.POST['submit'] == 'Edit':
        print "entry id: %s" % entry.id
        form = EntryForm(request.POST, instance=entry)
        if form.is_valid():
            secondEntry = form.save(False)
            print "second entry id: %s" % secondEntry.id
            form.save()
            message = "entry updated"
        else:
            message = 'There were errors'
  return render_to_response(
        'myadmin/edit_entry.html',
         { 'entryForm':form,'message': message}, 
         context_instance=RequestContext(request))

だから私は両方のIDを出力し、それらは同じです:

4

4 に答える 4

1

おそらく、行 form = EntryForm(request.POST, instance=entry) では、インスタンス パラメータを指定しないでください。これは、既存のモデルを更新するためのものです....

于 2009-02-02T15:30:11.543 に答える
0

form.save(force_update=True)

于 2009-04-21T19:32:27.050 に答える
0

form.save() が 2 回あるのはなぜですか? おそらくそれが問題です。

于 2009-02-01T02:55:15.797 に答える