【发布时间】:2015-08-26 04:23:57
【问题描述】:
我的 django-rest-framework 我有以下模型:
基本上每个行程都有一个最终目的地,并且可以有多个中间目的地。
models.py:
class Destination(models.Model):
name=models.CharField(max_length=30)
class Ride(models.Model):
driver = models.ForeignKey('auth.User', related_name='rides_as_driver')
destination=models.ForeignKey(Destination, related_name='rides_as_final_destination')
leaving_time=models.TimeField()
num_of_spots=models.IntegerField()
passengers=models.ManyToManyField('auth.User', related_name="rides_as_passenger")
mid_destinations=models.ManyToManyField(Destination, related_name='rides_as_middle_destination')
serializers.py - RideSerializer
class RideSerializer(serializers.ModelSerializer):
driver = serializers.ReadOnlyField(source='driver.user.username')
class Meta:
model = Ride
fields = ('driver', 'destination', 'leaving_time',
'num_of_spots', 'passengers', 'mid_destinations')
read_only_fields = ('driver', 'passengers', 'mid_destinations')
问题是 - 当我尝试 POST 到 /rides/ 以添加行程时 - 例如 {destination=LA, leaving_time=19:45, num_of_spots=4}
我收到错误"destination":["Incorrect type. Expected pk value, received str."]}
几个问题:
这是什么错误?如果我在 Ride 模型中有一个目的地作为外键,这是否意味着我要添加的目的地必须已经在 Destinations 表中?
如何修复此错误?
【问题讨论】:
标签: django serialization foreign-keys django-rest-framework