Django Rest Frame无法获取自嵌套对象的父ID

时间:2019-02-01 06:50:54

标签: django django-rest-framework

******* Models *******

class Category(models.Model):
    category_id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    name = models.CharField(max_length=50)
    parent_id = models.ForeignKey('self', on_delete=models.SET_NULL, null=True, blank=True)
    notes = models.CharField(max_length=200)
    def __str__(self):
        return '{0}, parent: {1}'.format(self.name, self.parent_id)

class Game(models.Model):
    name = models.CharField(max_length=50)
    category_id = models.ForeignKey(Category, on_delete=models.CASCADE)
    start_time = models.DateTimeField('Start Time', null=True, blank=True)
    end_time = models.DateTimeField('End Time', null=True, blank=True)
    opponent1 = models.CharField(max_length=200, null=True, blank=True)
    opponent2 = models.CharField(max_length=200, null=True, blank=True)
    description = models.CharField(max_length=200)
    status_id = models.ForeignKey(Status, on_delete=models.CASCADE)

    def __str__(self):
        return '{0}: {1}'.format(self.name, self.category_id)

    def get_absolute_url(self):
        return reverse('game-detail', args=[str(self.id)])

******* Serializer ********

class CategorySerializer(serializers.ModelSerializer):
    class Meta:
        model = Category
        fields = '__all__'

class GameSerializer(serializers.ModelSerializer):
    category_id = CategorySerializer(read_only=True)
    class Meta:
        model = Game
        fields = '__all__'

我正在编写一个API,以从API返回的所有游戏的category_id中获取parent_Id。但是当我返回所有游戏时,它不会显示parent_Id的值。

我还尝试将一个子类别添加到CategorySerializer,但是它仍然不起作用

class SubCategorySerializer(serializers.ModelSerializer):
    class Meta:
        model = Category
        fields = '__all__'

class CategorySerializer(serializers.ModelSerializer):
    subcategories = SubCategorySerializer(read_only=True)
    class Meta:
        model = Category
        fields = '__all__'

有人可以帮助我修复它吗?预先感谢。

0 个答案:

没有答案