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 [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-rest-framework/7d2b7aa3-2be3-4b21-9032-c1438e22754an%40googlegroups.com.