Ursprünglich hatte ich in meinem models.py
Validation ausschließen Selbst Von QuerySet
def validate_project_name(value,self):
project_name = Team.objects.filter(Project_name=value)
if self.pk:
project_name = project_name.exclude(pk=self.pk)
if project_name:
raise ValidationError('This already exists.')
class Team(models.Model):
Project_name = models.CharField(max_length=250, validators=[validate_project_name])
Project_number = models.IntegerField()
Dies im Sinne gearbeitet, dass es Benutzern die Eingabe nicht zulassen, dass bereits eine bestehende Project_name
. Jetzt habe ich jedoch eine Bearbeitungs-/Aktualisierungsfunktion eingebaut. Wenn also ein Benutzer seine eigene Team
aktualisieren möchte, wird der ValidationError ausgelöst, da er in der Datenbank vorhanden ist. Wenn der Benutzer beispielsweise Project_name
beibehalten möchte, aber die Project_number
aktualisieren, wird der Fehler ausgelöst. Also ich möchte self
aus dem Queryset ausschließen. Ich sah dieses Beispiel:
django exclude self from queryset for validation
Also habe ich einfach hinzugefügt, um den folgenden Code in meinem class Team
.
Aber es funktioniert nicht, da in der Validierung Fehler nicht ausgelöst wird ... Irgendwelche Ideen?
mit ich es versucht, jetzt etwas sagt: 'Team' Objekt hat kein Attribut 'cleaned_data' Auf dieser Linie. Project_name = self.cleaned_data [ 'Project_name'] Titel() – anderish
lesen Die Dokumentation "cleaned_data" ist bei der Modellvalidierung nicht gültig. Du wirst darauf zugreifen wie 'self.project_name'. – themanatuf