В моделях:
class Product(models.Model):
name = models.CharField(max_length=100)
price = models.IntegerField()
sub_category = models.ForeignKey(SubCategory, on_delete=models.SET_NULL, null=True, related_name='product')
class SubCategory(models.Model):
sub_category_name = models.CharField(max_length=50)
sub_category_img = models.ImageField(upload_to='sub_category_img')
В сериализаторах:
class ProductSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Product
fields = ['url', 'id', 'name', 'price', 'sub_category']
class SubCategorySerializer(serializers.HyperlinkedModelSerializer):
product = ProductSerializer(many=True)
class Meta:
model = SubCategory
fields = ['url', 'id', 'sub_category_name', 'sub_category_img', 'product']
Используя модели, я могу получить доступ к Products.sub_category
для одного набора запросов, а также SubCategory.product
обратный запрос, используя related_name in ForeignKey.
Используя сериализаторы, я могу получить доступ к ProductSerializer
запросу с использованием SubCategorySerializer
, но не могу получить доступ к SubCategorySerializer
из ProductSerializer
. Я получаю URL-адрес только для sub_category
при использовании ProductSerializer
.
Как я могу изменить оба в конечных точках API?
Я пытался, в сериализаторах,
class ProductSerializer(serializers.HyperlinkedModelSerializer):
sub = SubCategorySerializer()
class Meta:
model = Product
fields = ['url', 'id', 'name', 'price', 'sub_category', 'sub']
class SubCategorySerializer(serializers.HyperlinkedModelSerializer):
product = ProductSerializer(many=True)
class Meta:
model = SubCategory
fields = ['url', 'id', 'sub_category_name', 'sub_category_img', 'product']
Это не работает. Как я могу получить оба набора запросов как модели?