一對多關係序列化:
舉例:比如網站和網站上的圖片,序列化該網站的同時將網站上的所有圖片一起序列化
model關係:
class WebCollect(models.Model):
"""
網站
"""
name = models.CharField(max_length=20, verbose_name="網站標題")
url = models.URLField(verbose_name="網站超鏈接")
class Image(models.Model):
"""
網站上的圖片
"""
web_collect = models.ForeignKey(WebCollect, on_delete=models.CASCADE, related_name='web_img', verbose_name="網站")
img = models.ImageField(upload_to=web_img_path, null=True, blank=True, verbose_name="網站圖片")
ps:此處千萬注意必須在外鍵關係中加上related_name=‘自定義名稱’,在後面會用到。否則外鍵上的所有內容都無法序列化(不僅不顯示,還不會報錯T-T)
serializer.py:
class ImgSerializer(serializers.ModelSerializer):
class Meta:
model = Image
fields = (
'img',
)
class WebCollectSerializer(serializers.ModelSerializer):
web_img = ImgSerializer(many=True, read_only=True)
class Meta:
model = WebCollect
fields = (
'id', 'name', 'url', 'web_img'
)
此處fields中的 ‘web_img’ 就是上面related_name裏所定義的名稱。
這樣才能將外鍵上的所有內容都序列化了。