Получение всего объекта связанного поля в django

У меня есть такая модель:

 class Cart(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid4)
    customer = models.ForeignKey(Customer, on_delete=models.CASCADE, null=True)


class Reception(models.Model):
    PAYMENT_STATUS_PENDING = 'P'
    PAYMENT_STATUS_COMPLETE = 'C'
    PAYMENT_STATUS_FAILED = 'F'
    PAYMENT_STATUS_CHOICES = [
        (PAYMENT_STATUS_PENDING, 'Pending'),
        (PAYMENT_STATUS_COMPLETE, 'Complete'),
        (PAYMENT_STATUS_FAILED, 'Failed')
    ]
    cart = models.ForeignKey(Cart, on_delete=models.CASCADE, null=True)
    customer = models.ForeignKey(Customer, on_delete=models.CASCADE)
    entry_date = models.DateField()
    total_price = models.IntegerField()
    payment_status = models.CharField(
        max_length=1,
        choices=PAYMENT_STATUS_CHOICES,
        default=PAYMENT_STATUS_PENDING
    )

Мой вопрос заключается в следующем: Как я могу получить конкретную запись Cart из модели Reception? Я пробовал использовать этот сериализатор:

class ReceptionSerializer(serializers.ModelSerializer):
    class Meta:
        model = Reception
        fields = ['id', 'customer', 'entry_date', 'payment_status', 'cart']

но он возвращает только id корзины. Я хочу вернуть весь объект этой конкретной корзины. Как я могу это сделать?

Если вы хотите использовать вложенную сериализацию, одним из возможных решений будет определение CartSerializer и переопределение поля cart класса ReceptionSerializer следующим образом

class CartSerializer(serializers.ModelSerializer):
    class Meta:
        model = Cart
        fields = ['id', 'customer']

class ReceptionSerializer(serializers.ModelSerializer):
    cart = CartSerializer(many=True)
    
    class Meta:
        model = Reception
        fields = ['id', 'customer', 'entry_date', 'payment_status', 'cart']

Однако, обратите внимание, что поле cart таким образом станет доступным только для чтения.

Вернуться на верх