J'ai une question sur la façon de mettre à jour une ligne existante dans ma base de données lorsque l'un des champs est ma clé primaire. J'utilise ModelForm et Django-Piston - mon objectif principal ici est d'envoyer RESTful Post à mon webservice. Je suis en mesure d'envoyer les messages initiaux correctement (c'est-à-dire que la valeur de clé primaire n'existe pas encore). Le problème est quand je veux mettre à jour une valeur où la clé primaire existe déjà - quand j'émets un f.is_valid() il échoue parce que "cet identifiant unique existe déjà". Comment puis-je effectuer une validation de formulaire à l'aide de ModelForms pour mettre à jour une ligne existante?Comment mettre à jour une ligne déjà existante lors de l'utilisation de ModelForms?
Mon 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)
forms.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'}),
)
Si une réponse vous a donné les informations dont vous aviez besoin, vous devez l'accepter (cliquez sur la coche). –