【发布时间】:2015-12-24 21:40:00
【问题描述】:
我对 django rest 框架相当陌生。我的数据库中有这些表:
1) MainCategroies - 存储所有教育领域的列表。
2) College - 存储我所在州所有大学的列表。
3) CollegeCategoryLink - 存储大学及其所属类别之间的链接(此处同一大学可以属于多个类别)。 创建了一个具有两个外键列的模型
4) Users - 我的应用的用户。
5) UserCategoryLink - 用户与其所选类别之间的链接。 创建了一个具有两个外键列的模型
6) UserCollegeLink - 用户与其所选大学之间的链接。 创建了一个具有两个外键列的模型
现在用户将从列表中选择他们喜欢的类别 这将存储在我的数据库中,然后我将返回 相关院校回来。所有数据都将以 json 格式来自我的 离子应用程序。
我为每个模型编写了序列化程序,并为 CRUD 操作创建了视图集。现在我很困惑,如何通过视图集方法存储数据?我目前正在这样做:
class UserCategoryLinkViewset(viewsets.ViewSet):
serializer_class = UserCategoryLinkSerializer
def create(self, request):
selectedCats = []
collegeList = []
data = JSONParser().parse(request)
for field in data:
selectedCats.append(field['cat'])
ucl = UserCategoryLink()
ucl.user = collegeAppUser.objects.get(id=field['user'])
ucl.cat = MainCategories.objects.get(id=field['cat'])
if not UserCategoryLink.objects.filter(user=field['user'], cat=field['cat']).exists():
ucl.save()
for cats in selectedCats:
queryset = CollegeCategoryLink.objects.filter(category_id=cats)
serializer = CollegeCategoryLinkSerializer(queryset, many=True)
for clg in serializer.data:
queryset_college = College.objects.filter(id=clg['college_id'])
serializer_college = CollegeSerializer(queryset_college, many=True)
collegeList.append(serializer_college.data)
return JSONResponse(collegeList)
这是我的序列化程序:
from rest_framework import serializers
from manageApp.models import collegeAppUser,MainCategories,UserCategoryLink, CollegeCategoryLink, College, UserCollegeLink
class collegeAppUserSerializer(serializers.ModelSerializer):
class Meta:
model = collegeAppUser
fields = ('id', 'username', 'password')
class MainCategorySerializer(serializers.ModelSerializer):
class Meta:
model = MainCategories
fields = ('id', 'category_name')
class UserCategoryLinkSerializer(serializers.ModelSerializer):
class Meta:
model = UserCategoryLink
fields = ('id', 'user', 'cat')
class CollegeCategoryLinkSerializer(serializers.ModelSerializer):
class Meta:
model = CollegeCategoryLink
fields = ('id', 'college_id', 'category_id')
class CollegeSerializer(serializers.ModelSerializer):
class Meta:
model = College
fields = ('id', 'college_name', 'college_url')
class UserCollegeLinkSerializer(serializers.ModelSerializer):
class Meta:
model = UserCollegeLink
fields = ('id', 'user', 'college')
但这不是完成我需要做的事情的正确方法,因为我直接在我的模型中设置数据并保存它,这里没有使用序列化程序。我想通过序列化程序存储数据,而不是直接使用我的模型。
【问题讨论】:
标签: django python-2.7 django-models django-rest-framework