1

次のモデルが定義されているとします。

class Location(models.Model):
    name = models.CharField(max_length=20)
    longitude = models.CharField(max_length=30)
    latitude = models.CharField(max_length=30)

そして、既存の Location インスタンスがありますid=1

このインスタンスに対して更新を投稿したいのですが、pk/id をサーバーに送信する方法がわかりません。私は2つの考えを念頭に置いています。

  1. URL の一部として含めます (例: ^update_location/(?P<pk>[0-9]+)/$')。
  2. 他の属性を更新するための値とともに、POST データに含めます。

私の質問は、なぜ一方を他方よりも選択したいのですか?

私が使用している一般的なビューではデフォルトでサポートされているため、オプション 1 に傾倒していますdjango.views.generic.edit.UpdateView。しかし、私はまだ選択方法を知りません。

4

2 に答える 2

2

オプション 1 を使用すると、reverse() で URL が適切に作成されるため、Python が簡単になります。

オプション 2 では、URL と POST データを作成する必要がないため、JavaScript が簡単になります。

于 2012-11-02T15:03:34.417 に答える
2

私はあなたがこのようにすることができると言います:

url(r'^update_location/(?P<location_id>\d+)/$', 'location.views.update'),

そしてあなたの見解では:

def detail(request, location_id):
    // do whatever needed with location_id object
    location = Location.objects.get(id=location_id)
    return HttpResponse("You're updating location %s." % location_id)

フォームの処理については、 https ://docs.djangoproject.com/en/dev/topics/forms/?from=olddocs をご覧ください。

于 2012-11-02T15:09:33.977 に答える