0

我只使用此代码获取父 ID,但我需要父节点名称。是否可以获得父节点名称?

class Department(MPTTModel,NameStatusModelMixin):
    desc = models.TextField(blank=True, null=True, default=None)
    slug = models.SlugField(max_length=100, blank=True)
    parent = TreeForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, related_name='children')
    related_positions = models.ManyToManyField('Position', related_name='departments')
    
    
    class MPTTMeta:
        order_insertion_by = ['id']
 

    def __str__(self):
        return self.name

class DepartmentDetailSerializer(ModelSerializer):
    
    class Meta:
        model = Department
        fields = ('id', 'name', 'status', 'slug', 'desc', 'parent')
4

1 回答 1

0

最简单的方法是:

class ParentSerializer(ModelSerializer):
    class Meta:
        model = Department
        fields = ('name')

class DepartmentDetailSerializer(ModelSerializer):

    parent = ParentSerializer()
    
    class Meta:
        model = Department
        fields = ('id', 'name', 'status', 'slug', 'desc', 'parent')

您还可以查看使用SerializerMethodField递归/自引用序列化程序,具体取决于您的确切需求/您希望最终数据看起来像什么......

于 2021-05-28T03:13:23.773 回答