我需要通过Angularjs填充表单,该表单应该从API获取数据。 API应返回用户表中的数据以及静态表(计划,国家)中通过外键与用户表相关的数据。
串行器:
class CountrySerializer(serilizers.ModelSerializer):
class Meta:
model = Country
queryset = Country.objects.all()
fields = ('id','name')
class PlanSerializer(serializers.ModelSerializer):
class Meta:
model = Plan
queryset = Plan.objects.all()
fields = ('id','details')
class UserSerializer(serializers.ModelSerializer):
plan = PlanSerializer()
conutry = CountrySerializer()
class Meta:
model = User
fields = ('name','plan','role','country',)
我的用户模型:
class User(models.Model):
name = models.CharField(max_length = 60)
role = models.ForeignKey(User_Role, null = True, blank = True)
plan = models.ForeignKey(Plan, null = True, blank = True)
country = models.ForeignKey(Country, null = True, blank = True)
我将调用Angularjs的UserSerializer
API,该API应返回用户的姓名,计划,角色,国家以及相应表格中的其他计划,国家/地区列表。
基本上我需要为用户更新计划,国家/地区,因此我需要从计划/国家/地区表中获取其他计划/国家/地区详细信息,以便我可以发送PUT / PATCH请求来更新它。它与Django rest框架可浏览的API HTML表单(用于PUT)非常相似,除了我使用Angularjs从服务器获取数据。
我想要的只是一个API,它为相应的用户选择数据,这些数据也从其他静态表(计划,国家/地区表)获取更多数据,这些数据有助于更新某些字段(如计划,国家/地区)。
答案 0 :(得分:2)
你在这里想要实现的目标(在同一个响应中返回不同类型的objets)并不是非常符合REST的概念,所以“django-rest-framework”不太可能让你这样做。
您可能应该在此处进行3次API调用:
答案 1 :(得分:0)
您很好,让n-api调用不是最好的主意。 您可以使用Django REST framework nested serialization
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('name','plan','role','country',)
depth = 1