I've just started with Django REST framework and I'm having trouble with saving foreign keys. I have a Merchant
model and a Phone
model. The Phone
has a foreign key to Merchant
. When making a POST
request to Merchant
, I want to create Phone
objects for the numbers provided in the request. But when I supply the phone numbers, it gives me the following error
Object with phone=0123456789 does not exist.
I just want it to create the Phone
object itself. Here are the models that I am using:
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'
And here is the view and serializer that I am using them with
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
Here's what my request body looks like:
{
"merchant_id": "emp011",
"name": "Abhinav",
"is_active": true,
"phones": [
"0123456789",
"9876543210"
]
}
Here's the response:
400 Bad Request
{"phones":["Object with phone=0123456789 does not exist."]}
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…