우리는이 스택과 함께 모바일 웹 응용 프로그램을 만드는 :Django REST Framework에서 모델/시리얼 라이저를 올바르게 정의하는 방법은 무엇입니까?
파이썬을 장고, SQLite는 DB 장고 REST 이온 코르도바 각도 JS
이 당신이 4 여러 질문에 대답하는 퀴즈 응용 프로그램입니다 선택. 질의 응답은 데이터베이스에 저장됩니다. REST 프레임 워크의 도움으로 엔드 포인트가 작성되었습니다.
이 JSON 파일을 사용하면 Angular JS 컨트롤러가 비동기 적으로 작동합니다. 문제는 model.py에서 답을 정의하는 것입니다. 배열에 배열이 포함됩니다.
우리는 장고 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
},
]
을 그리고 이것은 우리가 무엇을 :
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()
:
여기[
{
"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 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
Google 솔루션에서 URL을 제거하는 것이 가능합니까?
감사! ModelSerializer를 사용하여 마침내 효과가있었습니다. '클래스 AnswerSerializer (serializers.ModelSerializer) : 클래스 메타 : 모델 = ('텍스트') 필드 = 대답 클래스 QuestionSerializer (serializers.ModelSerializer) : 클래스 메타 : 모델 = 질문 필드 = ('question', 'answers', 'correct') read_only_fields = ('answers',) depth = 1' ID가 자동으로 설정 되었기 때문에 맞춤 ID를 삭제해야했습니다. – Vietosan