Сериализация объекта одного уровня из поля Many to many

Мне нужно сериализовать запасной экземпляр из поля spare variety many to many.

Models.py

class SpareVariety(models.Model):
  quality = models.ForeignKey(Quality, max_length=255, on_delete=models.CASCADE, null=True, blank=True)

  variety_name = models.CharField(max_length=255, null=True, blank=True)
  property = models.ForeignKey(SpareProperty, null=True, blank=True, on_delete=models.CASCADE)
  purchase_price = models.PositiveIntegerField(help_text="in INR", blank=True, null=True)
  retail_price = models.FloatField(help_text="All values in INR", blank=True, null=True)
  dealer_price = models.FloatField(help_text="All values in INR", blank=True, null=True)
  stock_available = models.PositiveIntegerField(blank=True, null=True,default=True)
  spare_costing = models.ForeignKey(SpareCosting, on_delete=models.CASCADE, blank=True, null=True)
  spare_discount = models.ForeignKey(Discount, on_delete=models.CASCADE, blank=True, null=True)
  is_available = models.BooleanField(default=False)
  date_added = models.DateTimeField(auto_now=True)
  date_updated = models.DateTimeField(auto_now_add=True)

class Spare(models.Model):
  product = models.ForeignKey(Product, on_delete=models.CASCADE)
  spare_variety = models.ManyToManyField(SpareVariety, related_name='spare_varieties', null=True, blank=True)
  name = models.CharField(max_length=255, help_text="Enter the name of spare (Ex:Display, Speakers)")
  type = models.ForeignKey(Type, blank=True, null=True, on_delete=models.CASCADE)
  date_added = models.DateTimeField(auto_now=True)
  date_updated = models.DateTimeField(auto_now_add=True)

def __str__(self):
    return '%s - %s' % (self.product.name, self.name)

Сериализуйте запасную модель из сериализатора запасных сортов

serializers.py

class SpareVarietySerializer(serializers.HyperlinkedModelSerializer):
  spare_costing= SpareCostingSerializer(many=False, read_only=False)
  spare_discount = DiscountSerializer(many=False, read_only=False)
  quality = QualitySerializer(many=False, read_only=False)
  property = SparePropertySerializer(many=False, read_only=False)
  spare_name = serializers.CharField(read_only=True, source="spare.name")
  class Meta:
    model = SpareVariety
    fields = ['id','quality','variety_name','purchase_price','spare_name','retail_price','property', 'dealer_price', 'stock_available','spare_costing','spare_discount','is_available', 'date_added', 'date_updated',]
Вернуться на верх