我对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')
但这不是来完成我需要做的,因为我直接在我的模型设置数据的正确方法并保存它,在这里不使用序列化器。我想通过序列化器存储数据,而不是直接使用我的模型。
尽管此链接可能会回答问题,但最好在此处包含答案的基本部分,并提供供参考的链接。如果链接的页面发生变化,链接唯一的答案可能会失效 – Dethariel
@werton您能否请我详细解释一下,因为这种嵌套的关系会如何帮助我在这里? –