我有2个模型
class Ad(ActivatorModel, TimeStampedModel):
........
class AdImage(models.Model):
image = models.ImageField(upload_to=get_file_path)
is_primary = models.BooleanField(default=False)
ad = models.ForeignKey(Ad, on_delete=models.CASCADE)
我的序列化器是
class MyAdsSerializer(serializers.ModelSerializer):
class Meta:
model = ads.models.Ad
如何在上述序列化器中获取广告主图像
答案 0 :(得分:2)
在MyAdsSerializer
内添加一个显式的序列化器。
调整AdImage
以在ad
ForeignKey
上有一个明确的related_name
:
class AdImage(models.Model):
image = models.ImageField(upload_to=get_file_path)
is_primary = models.BooleanField(default=False)
ad = models.ForeignKey(Ad, on_delete=models.CASCADE, related_name='ad_images')
# ^^^^^^^^^^^^^^^^^^^^^^^^
更改MyAdsSerializer
,使其下方有一个序列化器,然后显式命名字段:
class MyAdsSerializer(serializers.ModelSerializer):
ad_image__images = serializers.CharField(
source='ad_images.image',
many=True,
read_only=True)
class Meta:
model = ads.models.Ad
fields = ('id', 'other_ad_field', 'ad_image__images'