2015-09-27 61 views
1

我对django rest框架相当陌生。我在我的数据库中有这些表格:通过串行器在django模型中存储多个值

1)Main分类 - 存储所有教育字段的列表。

2)学院 - 它存储我所有的州立大学的名单。

3)学院类别链接 - 存储大学和他们所属的类别(这里同一所大学可以属于多个类别)之间的链接。 创建了一个模型与两个外键列

4)用户 - 我的应用程序的用户。

5)用户类别链接 - 用户与其所选类别之间的链接。 创建的模型有两个外键列

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') 

但这不是来完成我需要做的,因为我直接在我的模型设置数据的正确方法并保存它,在这里不使用序列化器。我想通过序列化器存储数据,而不是直接使用我的模型。

回答

1

尝试关联模型。
你可以看到其余的框架文档:Relations

对于你的情况,你会使用嵌套关系! =]

+0

尽管此链接可能会回答问题,但最好在此处包含答案的基本部分,并提供供参考的链接。如果链接的页面发生变化,链接唯一的答案可能会失效 – Dethariel

+0

@werton您能否请我详细解释一下,因为这种嵌套的关系会如何帮助我在这里? –