Hi there! I have User model and serializer class which represents it.
*class User(models.Model):* * username = models.CharField(unique=True, max_length=50)* * is_admin = models.BooleanField(default=False)* *class CreateUserSerializer(serializers.ModelSerializer):* * class Meta:* * model = User* * fields = ("username", "is_admin")* * def create(self, validated_data: Dict[str, Any]) -> User:* * username = validated_data["username"]* * try:* * user_object = User.objects.create(username=username)* * except IntegrityError:* * raise UserAlreadyRegistered()* * return user_object* My database holds lots of users(appr. 10 million). When I create another user, Django Rest Framework look at the model fields and check that if there are any unique=True fields. If there are, then it assigns "UniqueValidator". This validator calls "filter_queryset" which means it query the database and check that are there any given username record. If there are not, then it creates the user. My question is, why DRF make a query before create operation? Since database(PostgreSQL) holds the field attributes, it knows that username field is unique, and it can throw an exception if I try to create user with the same username field. The reason I'm asking it, my application gets a lot of create operation, and each create operation I have to query my database, which is I think more costly than create it wihout making a filter query. Do I missing something in this operation? Thanks! -- You received this message because you are subscribed to the Google Groups "Django REST framework" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-rest-framework+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-rest-framework/7d2b7aa3-2be3-4b21-9032-c1438e22754an%40googlegroups.com.