【问题标题】:Load models and related data加载模型和相关数据
【发布时间】:2015-01-03 02:17:05
【问题描述】:


我目前正在开发一个 WebApp

服务器端:

客户端:


我的问题是关于与 Restangular 库的关系映射。

示例:

controller.js
Restangular.all('Cars').getList().then(function(_cars){
    $scope.cars= _cars;
});


_list.html

<tr ng-repeat="car in cars">
    <td>{[project.id]}</td> 
    <td>{[project.owner.name]}</td> <!-- owner is not mapped, (project.owner == ID) -->
</tr>


我的代码:

django:models.py

class Person(models.Model):
    #....
    name = models.CharField(db_index=True, max_length=200)

class Car(models.Model):
    #....
    owner = models.ForeignKey(Person, blank=True, null=True)

django:serializers.py

class CarSerializer(serializers.ModelSerializer):
    class Meta:
        model = Car
        fields = ('id', /*...*/, 'owner')

django:view.py

class CarList(generics.ListCreateAPIView):
    queryset = Car.objects.all()
    serializer_class = CarSerializer

我希望有一种方法可以轻松地完全映射我的对象,除了 Restangular 库,我不反对任何其他方式。

【问题讨论】:

    标签: django angularjs rest django-rest-framework restangular


    【解决方案1】:

    您似乎需要为Person 定义一个序列化程序并在您的CarSerializer 中引用它:

    class PersonSerializer(serializers.ModelSerializer):
        class Meta:
            model = models.Person
    
        fields = ('id', ...)
    
    
    # Then use that serializer in CarSerializer:
    class CarSerializer(serializers.ModelSerializer):
        owner = PersonSerializer(source='owner')
    
        class Meta:
            model = Car
            fields = ('id', /*...*/, 'owner')
    

    使用 DRF 可浏览 API 检查 JSON 负载以获取所需数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-25
      • 1970-01-01
      • 1970-01-01
      • 2013-06-10
      • 2016-11-28
      • 2014-10-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多