Django Rest框架多对多领域无法正常工作

时间:2020-11-08 18:51:21

标签: django django-models django-rest-framework

关于奇怪的事情,我需要您的帮助。

我有以下型号:

class Profile(models.Model):
    first_name = models.CharField(max_length=20, default="")
    last_name = models.CharField(max_length=20, default="")
    email = models.EmailField(max_length=50, unique=True, default="")
    image = models.ImageField(null=True, blank=True, upload_to=profile_image_upload_path)

class Skill(models.Model):
    profiles = models.ManyToManyField(Profile, blank=True)

    name = models.CharField(max_length=30)
    image = models.ImageField(upload_to=skill_image_upload_path)
    is_tech_skill = models.BooleanField(default=True)

和以下序列化器:

class SkillSerializer(serializers.ModelSerializer):
    profiles = serializers.PrimaryKeyRelatedField(queryset=Profile.objects.all(), many=True)
    class Meta:
        model=Skill
        fields=['name', 'image', 'is_tech_skill', 'expertise']

class ProfileSerializer(serializers.ModelSerializer):
    skill_list = SkillSerializer(read_only=True, many=True,)
    class Meta:
        model = Profile
        fields = ('first_name', 'last_name', 'email', 'image', 'skill_list')
        depth = 2

当我请求个人资料时,我看不到任何技能:

enter image description here

我在django管理控制台中为此个人资料添加了两项技能。

非常感谢!

1 个答案:

答案 0 :(得分:0)

序列化器中没有“个人资料” 1。。您在“个人资料” 中命名了其他名称后,将ManyToMany命名为个人资料,并且没有在任何地方使用它。 2。。我认为您需要将其添加到 serializer 中的字段 3。。将 related_name 添加到您的 ManyToManyField

相关问题