Quantcast
Channel: Active questions tagged python - Stack Overflow
Viewing all articles
Browse latest Browse all 14215

How can I display a name of a foreign key for the title of features in Django Serializer and React

$
0
0

The problem with my code is that it repeats the name of the property title for each object whose foreign key is in the product property model in a loop.I want the attribute_title():"Memory" field to be repeated only onceresult in react redux to be same :

PivotSerialize:attribute_id(pin):1product_id(pin):1attribute_name(pin):"ظرفیتحافظه"val(pin):"256"attribute_title(pin):"حافظه"attr_title_id(pin):"1"

I want the attribute_title():"حافظه" field to be repeated only once

my model is:

class AttributeTitle(models.Model):    attribute_title_id = models.BigAutoField(primary_key=True, editable=False)    title = models.CharField(max_length=100, unique=True)class Attribute(models.Model):    attribute_id = models.BigAutoField(primary_key=True, editable=False)    attr_title = models.ForeignKey(AttributeTitle,                                   on_delete=models.CASCADE, null=True, related_name='attribute_model_related_name')    attr_name = models.CharField(max_length=100)class ProductAttribute(models.Model):    p_a_id = models.BigAutoField(primary_key=True, editable=False)    product = models.ForeignKey(Product, on_delete=models.CASCADE, related_name='product_attribute')    attribute = models.ForeignKey(Attribute, on_delete=models.CASCADE)    value = models.CharField(max_length=100, null=True, blank=True)

my Serializer api is:

class ProductSerializer(serializers.ModelSerializer):    category = serializers.SerializerMethodField(read_only=True)    brands = serializers.SerializerMethodField(read_only=True)    photos = serializers.SerializerMethodField(read_only=True)    color = serializers.SerializerMethodField(read_only=True)    productAttribute = serializers.SerializerMethodField(read_only=True)    class Meta:        model = Product        fields = '__all__'    def get_category(self, obj):        category = obj.category        serializers = CategorySerializer(category, many=False).data        return serializers    def get_brands(self, obj):        brands = obj.brand        serializers = BrandsSerializer(brands, many=False).data        return serializers    def get_photos(self, obj):        photos = obj.product_images        serializers = ProductPhotosSerializer(photos, many=True).data        return serializers    def get_color(self, obj):        color = obj.product_color  # ProductColor.objects.filter(product_id=obj._id)        serializers = ProductColorSerializer(color, many=True).data        return serializers    def get_productAttribute(self, obj):        attribute = obj.product_attribute  # related_name='product_attribute' in ProductAttribute model        serializers = PivotSerializer(attribute, many=True).data        return serializersclass PivotSerializer(serializers.ModelSerializer):    attribute_name = serializers.SerializerMethodField(read_only=True)    attribute_title = serializers.SerializerMethodField(read_only=True)    val = serializers.SerializerMethodField(read_only=True)    attr_title_id = serializers.SerializerMethodField(read_only=True)    class Meta:        model = ProductAttribute        fields = ['attribute_id', 'product_id', 'attribute_name', 'val', 'attribute_title', 'attr_title_id']    def get_attr_title_id(self, obj):        attr = obj.attribute.attr_title.pk        return str(attr)    def get_attribute_name(self, obj):        attr = obj.attribute        return str(attr)    def get_attribute_title(self, obj):        res = obj.attribute.attr_title        return str(res)    def get_val(self, obj):        res = obj.value        return str(res)

Viewing all articles
Browse latest Browse all 14215

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>