Django rest framework DRF如何解析文本字段并将结果序列化到模型集

Django rest framework DRF如何解析文本字段并将结果序列化到模型集,django-rest-framework,Django Rest Framework,我在models.py中有下一个模型 class Rule(models.Model): name = models.CharField(max_length=30) description = models.TextField() class Question(models.Model): question = models.TextField(default='') answer = models.TextField(default='') rule

我在
models.py中有下一个模型

class Rule(models.Model):
    name = models.CharField(max_length=30)
    description = models.TextField()

class Question(models.Model):
    question = models.TextField(default='')
    answer = models.TextField(default='')
    rules = models.TextField(default='') # here I decided to store rules names only, separated by coma
class RuleSerializer(serializers.ModelSerializer):
    class Meta:
        model = Rule
        fields = ['name', 'description']


class QuestionSerializer(serializers.ModelSerializer):
    class Meta:
        model = Question
        fields = ['question', 'answer', 'rules']
我在
serializers.py中有下一个序列化程序

class Rule(models.Model):
    name = models.CharField(max_length=30)
    description = models.TextField()

class Question(models.Model):
    question = models.TextField(default='')
    answer = models.TextField(default='')
    rules = models.TextField(default='') # here I decided to store rules names only, separated by coma
class RuleSerializer(serializers.ModelSerializer):
    class Meta:
        model = Rule
        fields = ['name', 'description']


class QuestionSerializer(serializers.ModelSerializer):
    class Meta:
        model = Question
        fields = ['question', 'answer', 'rules']
作为结果输出,我有下一个JSON

[
    {
        "question": "How are you?",
        "answer": "fine",
        "rules": "rule 1, rule 2, rule 3"
    }
]
但是如何将
规则
字符串转换为对象呢?我找到了一个解决方案,但这意味着我应该手动转换/序列化
规则

class RuleSerializer(serializers.ModelSerializer):
    class Meta:
        model = Rule
        fields = ['name', 'description']


class QuestionSerializer(serializers.ModelSerializer):
    rules = serializers.SerializerMethodField()
    
    class Meta:
        model = Question
        fields = ['question', 'answer', 'rules']
    
    def get_rules(self, obj):
        names = [name.strip() for name in obj.rules.split(",")]
        rules = Rule.objects.all().filter(name__in=names)
        return [{
            "name": rule.name, 
            "description": rule.description,
        } for rule in rules]
当然我可以手动完成,但是如何使用现有的序列化程序来完成呢

def get_rules(self, obj):
        names = [name.strip() for name in obj.rules.split(",")]
        rules = Rule.objects.all().filter(name__in=names)
        
        serializer = RuleSerializer(rules)
        serializer.is_valid() # Mandatory

        return serializer.data