我們正在創造這個堆棧中的移動Web應用程序:如何正確定義Django REST框架的模型/序列化程序?
的Python Django的,SQLite的DB Django的REST 離子科爾多瓦 角JS
這是一個測驗的應用程序,在你回答4多個問題選擇。問題和答案存儲在數據庫中。在REST框架的幫助下,已經創建了一個端點。
有了這個JSON文件,我們的Angular JS控制器異步工作。 問題是在model.py中定義答案。它涉及一個數組中的數組。
我們正在試圖讓這個結構Django的REST:
[
{
"question" : "Java was originally developed at _______________",
"answer" : [
{"id" : 0, "text" : "Sun Microsystems"},
{"id" : 1, "text" : "Intel"},
{"id" : 2, "text" : "Hewlett-Packard"},
{"id" : 3, "text" : "Oracle"}
],
"correct" : 0
},
]
這是我們所擁有的:
[
{
"question": "Java was originally developed at _______________",
"answer": [
{
"url": "http://127.0.0.1:8000/api/answer/1/",
"answerid": 0,
"text": "Sun Microsystems"
},
{
"url": "http://127.0.0.1:8000/api/answer/2/",
"answerid": 1,
"text": "Intel"
},
{
"url": "http://127.0.0.1:8000/api/answer/3/",
"answerid": 2,
"text": "Hewlett-Packard"
},
{
"url": "http://127.0.0.1:8000/api/answer/4/",
"answerid": 3,
"text": "Oracle"
}
],
"correct": 0
}
]
這裏是我們的models.py:
from django.db import models
class Answer(models.Model):
answerid = models.IntegerField()
text = models.TextField()
class Question(models.Model):
question = models.CharField(max_length=200)
answer = models.ManyToManyField(Answer)
correct = models.IntegerField()
序列化器:
from quiz.models import Question, Answer
from rest_framework import routers, serializers, viewsets
class AnswerSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Answer
fields = ('answerid', 'text')
class QuestionSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Question
fields = ('question', 'answer', 'correct')
read_only_fields = ('answer',)
depth = 1
# ViewSets define the view behavior.
class QuestionViewSet(viewsets.ModelViewSet):
queryset = Question.objects.all()
serializer_class = QuestionSerializer
class AnswerViewSet(viewsets.ModelViewSet):
queryset = Answer.objects.all()
serializer_class = AnswerSerializer
是否有可能刪除我們的解決方案中的URL?
謝謝!我使用了ModelSerializer,它終於奏效了。 '類AnswerSerializer(serializers.ModelSerializer): 類元: 模型=回答 欄=( '文') 類QuestionSerializer(serializers.ModelSerializer): 類元: 模型=問題 欄=( 'question','answers','correct') read_only_fields =('answers',) depth = 1' 我也必須刪除自定義ID,因爲ID已自動設置 – Vietosan