When i try to query django model by positive small integer field i get error

When i run the following code i get the error "TypeError: Field 'app' expected a number but got <AppChoices.SUK: 1>"

class Category(models.Model):
      class AppChoices(models.Choices):
            ASK_EMBLA = 0
            SUK = 1

      ---


class SellerReview(models.Model):

 ------
    app = models.PositiveSmallIntegerField(
          choices=Category.AppChoices.choices, 
             default=Category.AppChoices.ASK_EMBLA)

    rating = models.PositiveSmallIntegerField()

-----

class RentPostDetailSearializer(serializers.ModelSerializer):

    ---

    def get_posted_by_brief(self, obj: RentPost):
    
           -----

    rating = 0

    ratings = list(poster_profile.seller_reviews.filter(
        app=Category.AppChoices.SUK).values_list("rating", flat=True)) #---> issue here 

    if ratings:
        rating = sum(ratings)/len(ratings)

    ---

Don't know why is this happening even though the App choices are integers and supposed to be numbers

If the values are integers, you should use models.IntegerChoices instead of models.Choices.

Unless using the IntegerChoices base class specifically, Enum members are not integers.

Back to Top