Отправка дополнительного поля сериализаторам -DRF [дубликат]
У меня есть ModelSerializer с полями из таблицы SubscriptionsPlans.
serializer.py
class SubscriptionSerializer(serializers.ModelSerializer):
class Meta:
model = SubscriptionsPlans
fields = {
'id',
'name',
'plan_type',
'plan_details',
'price'
}
Я хочу отправить дополнительное имя поля sub_id
в этот сериализатор из представлений. Этот sub_id будет True или False в зависимости от таблицы SubscriptionsOrder
. Если в SubscriptionsOrder есть строки, то sub_id будет True, иначе False. SubscriptionsOrder для конкретного пользователя смотрится здесь.
views.py
class SubscriptionView(APIView):
def get(self, request):
get_sub_id = SubscriptionsOrder.objects.filter(id=request.user).first()
sub_id = get_sub_id.plan_selected
subscription_details = SubscriptionsPlans.objects.filter(is_deleted=False)
user_serializer = SubscriptionSerializer(subscription_details)
return Response(user_serializer.data)
Я хочу отправить sub_id вместе с user_serializer.
models.py
class SubscriptionsPlans(models.Model):
id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=255)
plan_type = models.CharField(max_length=255)
plan_details = models.TextField(max_length=1000)
request_per_month = models.IntegerField()
price = models.FloatField()
is_deleted = models.BooleanField(default=False)
created_at = models.DateTimeField()
updated_at = models.DateTimeField(auto_now_add=True)
class Meta:
verbose_name = 'Subscription Plans'
verbose_name_plural = 'Subscription Plans'
class SubscriptionsOrder(models.Model):
id = models.IntegerField(primary_key=True)
user_id = models.ForeignKey(
AppUser,
null=True,
on_delete=models.SET_NULL
)
plan_selected = models.ForeignKey(SubscriptionsPlans, null=True,on_delete=models.SET_NULL)
billing_info = models.IntegerField()
payment_info = models.IntegerField()
class Meta:
verbose_name = 'Subscription Order'
verbose_name_plural = 'Subscription Order'
перед отправкой sub_id вывод выглядит следующим образом
{
"id": 1,
"name": "Professional",
"plan_type": "MONTHLY",
"plan_details": "{'Details'}",
"price": 50.0
},
{
"id": 2,
"name": "Business",
"plan_type": "MONTHLY",
"plan_details": "{Business}",
"price": 100.0
}
После отправки sub_id
{
"id": 1,
"name": "Professional",
"plan_type": "MONTHLY",
"plan_details": "{'Details'}",
"price": 50.0,
"sub_id": True
},
{
"id": 2,
"name": "Business",
"plan_type": "MONTHLY",
"plan_details": "{Business}",
"price": 100.0,
"sub_id":False
}