发布新记录时如何包括user_id(foreignKey)?

问题描述 投票:0回答:1

我是python Django rest-frame的新手,在创建新地址时遇到此问题:

null value in column "user_id" violates not-null constraint
DETAIL:  Failing row contains (21, full name, 123456789, any, any, any, any, any, any, f, null).

这是地址模型:

from django.db import models
from django.contrib.auth.models import User


class UserAddress (models.Model):
user = models.ForeignKey(
    User, related_name='addresses', on_delete=models.CASCADE)
full_name = models.TextField(default='')
phone = models.CharField(max_length=30, default='')
city = models.TextField()
province = models.TextField()
street = models.TextField()
description = models.TextField()
postcode = models.CharField(max_length=20)
country = models.CharField(max_length=100)
is_default = models.BooleanField(default=True)

class Meta:
    db_table = 'user_addresses'

这是序列化器:

from rest_framework import serializers
from user_action.models.address import UserAddress


class UserAddressSerializer(serializers.ModelSerializer):
id = serializers.IntegerField(read_only=True)
class Meta:
    model = UserAddress
    fields = ['id', 'full_name', 'phone', 'city', 'province',
              'street', 'description', 'postcode', 'country', 'is_default']

和POST方法:

@api_view(['POST'])
@permission_classes((IsAuthenticated,))
def createUserAddress(request):
user = request.user
if request.method == 'POST':
    serializer = UserAddressSerializer(data=request.data)
    if serializer.is_valid():
        newAddress = serializer.save()
    else:
        return Response(serializer.errors)
return Response(serializer.data)

提前感谢。

django django-models django-rest-framework django-serializer
1个回答
0
投票

发布请求无法保存用户详细信息。尝试将用户实例传递给serialiser.save()方法。

© www.soinside.com 2019 - 2024. All rights reserved.