フィールドの 1 つが主キーである場合に、データベース内の既存の行を更新する方法について質問があります。私は ModelForm と Django-Piston を使用しています。ここでの主な目標は、RESTful Post を Web サービスに送信することです。最初の投稿を正しく送信できました (つまり、主キーの値がまだ存在していません)。問題は、プライマリ キーが既に存在する値を更新する場合です。f.is_valid() を発行すると、「この UniqueIdentifier は既に存在する」ため失敗します。ModelForms を使用してフォームの検証を行い、既存の行を更新するにはどうすればよいですか?
私のmodels.py:
from django.db import models
class DeviceModel(models.Model):
uniqueIdentifier = models.CharField(primary_key=True, max_length=100)
deviceToken = models.CharField(max_length=100)
フォーム.py
from django import forms
from models import DeviceModel
class DeviceModelForm(forms.ModelForm):
class Meta:
model = DeviceModel
handlers.py
class DeviceHandler(BaseHandler):
allowed_methods = ('POST', 'GET', 'DELETE',)
def create(self, request):
f = DeviceModelForm(request.POST)
if f.is_valid():
new_object = f.save()
return new_object
return rc.BAD_REQUEST
urls.py
from django.conf.urls.defaults import *
from piston.resource import Resource
from api.handlers import DeviceHandler
device_handler = Resource(DeviceHandler)
urlpatterns = patterns('',
(r'^api/$', device_handler, {'emitter_format': 'json'}),
)