【发布时间】:2015-01-18 12:47:53
【问题描述】:
我刚开始使用 Django REST 框架,但在保存外键时遇到了问题。我有一个Merchant 模型和一个Phone 模型。 Phone 有一个指向 Merchant 的外键。在向Merchant 发出POST 请求时,我想为请求中提供的数字创建Phone 对象。但是当我提供电话号码时,它给了我以下错误
phone=0123456789 的对象不存在。
我只希望它自己创建Phone 对象。以下是我正在使用的模型:
class Merchant(models.Model):
merchant_id = models.CharField(max_length=255)
name = models.CharField(max_length=255)
is_active = models.BooleanField(default=True)
class Meta:
managed = True
db_table = 'merchant'
# Managers
objects = models.Manager()
active = managers.ActiveManager()
class Phone(models.Model):
phone = models.CharField(max_length=255)
merchant = models.ForeignKey('merchant.Merchant',
related_name='phones',
blank=True,
null=True)
class Meta:
managed = True
db_table = 'phone'
这是我使用它们的视图和序列化程序
class MerchantSerializer(serializers.ModelSerializer):
phones = serializers.SlugRelatedField(
many=True,
slug_field='phone',
queryset=primitives.Phone.objects.all())
class Meta:
model = Merchant
fields = (
'merchant_id',
'name',
'is_active',
'phones',
)
class MerchantViewSet(viewsets.ModelViewSet):
queryset = Merchant.active.all()
serializer_class = MerchantSerializer
这是我的请求正文的样子:
{
"merchant_id": "emp011",
"name": "Abhinav",
"is_active": true,
"phones": [
"0123456789",
"9876543210"
]
}
回复如下:
400 错误请求
{"phones":["Object with phone=0123456789 does not exist."]}
【问题讨论】:
标签: django django-rest-framework