我是一名有用的助手,可以为您进行文本翻译。以下是需要翻译的内容:
现在我正在使用Django Rest Framework编写REST API,所以我会得到像这样的结果。
我正在尝试在模型序列化器中添加一个新字段,该字段将显示与另一个模型相关的所有值。
就像我有以下内容:
models.py
from django.db import models
class University(models.Model):
name = models.CharField(max_length=50)
def __unicode__(self):
return self.name
class Student(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
university = models.ForeignKey(University)
def __unicode__(self):
return '%s %s' % (self.first_name, self.last_name)
views.py
from rest_framework import viewsets
from .models import University, Student
from .serializers import UniversitySerializer, StudentSerializer
class StudentViewSet(viewsets.ModelViewSet):
queryset = Student.objects.all()
serializer_class = StudentSerializer
class UniversityViewSet(viewsets.ModelViewSet):
queryset = University.objects.all()
serializer_class = UniversitySerializer
serializers.py
from rest_framework import serializers
from .models import University, Student
class UniversitySerializer(serializers.ModelSerializer):
class Meta:
model = University
class StudentSerializer(serializers.ModelSerializer):
class Meta:
model = Student
和
urls.py
from rest_framework import routers
from core.views import StudentViewSet, UniversityViewSet
from django.conf import settings
from django.conf.urls import url, include
from django.contrib import admin
router = routers.DefaultRouter()
router.register(r'students', StudentViewSet)
router.register(r'universities', UniversityViewSet)
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^api/', include('apps.core.urls', namespace='core')),
]
现在我正在使用Django Rest Framework编写REST API,所以我会得到像这样的结果。
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept
{
"students": "http://127.0.0.1:8000/api/students/",
"universities": "http://127.0.0.1:8000/api/universities/"
}
现在当我点击http://127.0.0.1:8000/api/universities/时,我会得到
HTTP 200 OK
Allow: GET, POST, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept
[
{
"id": 1,
"name": "test42"
},
{
"id": 2,
"name": "xxxxxx1222"
},
{
"id": 3,
"name": "MIT"
}
]
在点击http://127.0.0.1:8000/api/students/后发生以下情况:
HTTP 200 OK
Allow: GET, POST, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept
[
{
"id": 35,
"first_name": "Gugu",
"last_name": "Gaga",
"university": 11
},
{
"id": 36,
"first_name": "qwer",
"last_name": "abcd",
"university": 12
}
]
学生有所属的大学,因此我想添加一个学生在大学中的ID列表。
例如:
HTTP 200 OK
Allow: GET, POST, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept
[
{
"id": 1,
"name": "test42"
"students" : {42,56,78}
},
{
"id": 2,
"name": "xxxxxx1222"
"students" : {2,6,8}
},
{
"id": 3,
"name": "MIT"
"students" : {4,5,7}
}
]
如何做到?