我是django rest框架的新手。我在我的数据库中有这些表:
1) MainCategroies - 存储所有教育字段的列表。
2)大学 - 存储我所有州的大学名单。
3) CollegeCategoryLink - 存储大学与其所属类别之间的联系(此处同一所大学可归入多个类别)。 使用两个外键列
创建了一个模型4)用户 - 我的应用的用户。
5) UserCategoryLink - 用户及其选定类别之间的链接。创建了一个包含两个外键列的模型
6) UserCollegeLink - 用户与所选院校之间的链接。创建了一个包含两个外键列的模型
现在,用户将从列表中选择他们的首选类别 并将存储在我的数据库中,然后我将返回 相关学院回来了。所有数据都将以我的json格式提供 离子应用。
我为每个模型编写了序列化程序,并为CRUD操作创建了视图集。现在我很困惑,如何通过viewset方法存储数据?我目前正在这样做:
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')
但这不是完成我需要做的正确方法,因为我直接在我的模型中设置数据并保存它,在这里没有使用序列化器。我希望通过序列化程序存储数据,而不是直接使用我的模型。