6

Ich habe folgendes Modell außer Kraft zu setzen:Wie Modell Feldvalidierung in django Rest Rahmen ModelSerializer

class UserProfile(models.Model): 
    mobileNumber = models.BigIntegerField(primary_key=True) 
    authKey = models.CharField(max_length=300,null=False,blank=False) 
    creationDateTime = models.DateTimeField(auto_now_add=True) 
    lastUpdateDateTime = models.DateTimeField(auto_now=True) 

Serializer:

class UserProfileSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = UserProfile 
     fields = ('mobileNumber','authKey') 

Wenn Benutzerprofil-Modell hat bereits eine Handynummer xx44 und wenn ich zu serialisiert versuchen, benutze UserProfileSerializer mit json {'mobileNumber': XX44, 'authKey': u'ggsdsagldaslhdkjashdjkashdjkahsdkjah '} Ich erhalte den folgenden Fehler:

{'mobileNumber': [u'User profile with this MobileNumber already exists.']} 

, weil Modellvalidierungen für das Serializerfeld ausgeführt werden.

Wie kann ich die Ausführung der Modellfeldüberprüfung für mobileNumber stoppen? Ich habe validate und validate_mobileNumber Methoden im Serializer versucht, aber sie führen immer noch die Modellvalidierungen durch.

+0

Die Daten, die Sie zu serialisieren versuchen { ‚Handynummer‘: xx44 .....} Ist es einige zufällige Daten oder Daten von Userprofile Modell? Wenn es sich um zufällige, nicht validierte Daten handelt, sollten Sie den Serializer nicht zum Serialisieren verwenden. Verwenden Sie einfach einen normalen Serializer. –

+0

Versuchen Sie, 'primary_key = True' aus dem UserProfile-Modell zu entfernen. – CuriousGeorge

Antwort

2

Entfernen Sie eindeutige Einschränkung auf Handy-Nummer der Tabelle, so Django Serializer wird entsprechend zu validieren.

oder alternativ

serializer=UserProfileSerializer(data=request.DATA,partial=True) 
Verwandte Themen