如何在 Django 休息框架 api 中的对象内有一个数组
How to have a array inside an object in django rest framework api
我想创建这种 API Django:
{
question_no: "1",
question: "How many sides are equal in a scalene triangle?",
options: [
{ answer_options: "3", selected: false, isCorrect: true },
{ answer_options: "2", selected: false, isCorrect: false},
{ answer_options: "0", selected: false, isCorrect: false},
{ answer_options: "1", selected: false, isCorrect: false},
],
},
但我不知道如何在 Django 休息框架中的 API 中添加 options
数组。
这是我到目前为止创建的模型,但它只包含 question_no
和 question
:
class quiz(models.Model):
question_no = models.IntegerField()
question = models.CharField(max_length=400)
如何在我的模型中添加选项数组?
如果您有 options
的模型,您可以像这样使用嵌套序列化器来做到这一点:
class OptionSerializer(serializers.ModelSerializer):
class Meta:
model = Option
fields = ('answer_options', 'selected', 'isCorrect', )
class QuizSerializer(serializers.ModelSerializer):
options = OptionSerializer(many=True)
class Meta:
model = Quiz
fields = ('question_no', 'question', 'options', )
如果您没有任何模型,您可以像这样使用 SerializerMethodField
:
class QuizSerializer(serializers.ModelSerializer):
options = SerializerMethodField(method_name=get_options)
class Meta:
model = Quiz
fields = ('question_no', 'question', 'options', )
def get_options(self, obj):
# now you should get your list of options somehow, for example get it from object:
# options = obj.get_options()
# for simplicity, I just statically created options list:
options = [
{ answer_options: "3", selected: False, isCorrect: True },
{ answer_options: "2", selected: False, isCorrect: False},
{ answer_options: "0", selected: False, isCorrect: False},
{ answer_options: "1", selected: False, isCorrect: False},
]
return options
我想创建这种 API Django:
{
question_no: "1",
question: "How many sides are equal in a scalene triangle?",
options: [
{ answer_options: "3", selected: false, isCorrect: true },
{ answer_options: "2", selected: false, isCorrect: false},
{ answer_options: "0", selected: false, isCorrect: false},
{ answer_options: "1", selected: false, isCorrect: false},
],
},
但我不知道如何在 Django 休息框架中的 API 中添加 options
数组。
这是我到目前为止创建的模型,但它只包含 question_no
和 question
:
class quiz(models.Model):
question_no = models.IntegerField()
question = models.CharField(max_length=400)
如何在我的模型中添加选项数组?
如果您有 options
的模型,您可以像这样使用嵌套序列化器来做到这一点:
class OptionSerializer(serializers.ModelSerializer):
class Meta:
model = Option
fields = ('answer_options', 'selected', 'isCorrect', )
class QuizSerializer(serializers.ModelSerializer):
options = OptionSerializer(many=True)
class Meta:
model = Quiz
fields = ('question_no', 'question', 'options', )
如果您没有任何模型,您可以像这样使用 SerializerMethodField
:
class QuizSerializer(serializers.ModelSerializer):
options = SerializerMethodField(method_name=get_options)
class Meta:
model = Quiz
fields = ('question_no', 'question', 'options', )
def get_options(self, obj):
# now you should get your list of options somehow, for example get it from object:
# options = obj.get_options()
# for simplicity, I just statically created options list:
options = [
{ answer_options: "3", selected: False, isCorrect: True },
{ answer_options: "2", selected: False, isCorrect: False},
{ answer_options: "0", selected: False, isCorrect: False},
{ answer_options: "1", selected: False, isCorrect: False},
]
return options