2016-03-29 16 views
0

Ben kullanıcı kayıt https://stackoverflow.com/a/19337404/4507367 cevapVarsayılan REST Kullanıcı modelinde bir alanın benzersizliği nasıl zorlanır?

@api_view(['POST']) 
def register(request): 
    VALID_USER_FIELDS = [f.name for f in get_user_model()._meta.fields] 
    serialized = UserSerializer(data=request.data) 
    if serialized.is_valid(): 
     user_data = {field: data for (field, data) in request.data.items() if field in VALID_USER_FIELDS} 

     user = get_user_model().objects.create_user(
      **user_data 
     ) 
     return Response(UserSerializer(instance=user).data, status=status.HTTP_201_CREATED) 
    else: 
     return Response(serialized._errors, status=status.HTTP_400_BAD_REQUEST) 

kodunu kullanıyorum ama kayıt isteği zaten kullanılan e-posta varsa kayıt başarısız olmasını istiyorum. Bu muhtemelen user_data['email'] tarafından tüm kullanıcıları filtrelemek ve e-posta zaten varsa, ancak kötü bir uygulama gibi görünüyor istek reddederek yapılabilir. Daha iyi bir yolu olmalı!

cevap

1

Benzersiz olduğundan emin olmak için alanınıza bir UniqueValidator eklemelisiniz.

+0

Zaten şuna baktım, ama böyle bir doğrulayıcıyı nasıl kullanacağımı bilmiyorum (modelde mi? Veya seri hale getirici?) – Zygro

+0

Diziselleştirici içinde (model benzersiz bir kısıtlama varsa ücretsiz gelir). – Linovia

İlgili konular