Y a-t-il un moyen de mettre à jour un champ unique dans la vue de mise à jour ? J'ai un modèle qui a un champ name
et un champ age
mais lorsque j'essaie de mettre à jour l'age
sans même changer la valeur du name
, cela renvoie une erreur indiquant que le nom existe déjà dans la base de données.
models.py
class MyModel(models.Model)
name = models.CharField(max_length=200, unique=True)
age = models.IntegerField()
views.py
class MyModelUpdateView(UpdateView):
def get(self):
self.object = self.get_object()
my_model = self.object
form = MyModelForm(instance=my_model)
return self.render_to_response(
self.get_context_data(pk=my_model.pk, form=form)
)
def post(self, request, *args, **kwargs):
self.object = self.get_object()
my_model = self.object
form = MyModelForm(data=request.POST, instance=my_model)
if form.is_valid():
form.save()
return some_url
return self.render_to_response(
self.get_context_data(pk=my_model.pk, form=form)
)
forms.py
class MyModelForm(forms.ModelForm):
class Meta:
model = MyModel
fields = (
'name',
'age',
)
def clean(self):
cleaned_data = super().clean()
if MyModel.objects.filter(
actif=True, name=cleaned_data.get('name')
).exists():
raise forms.ValidationError('MyModel existe déjà.')
return cleaned_data
Qu'est-ce que j'ai manqué ici ? Merci.