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
CodePudding user response:
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.