django - 发布新记录时如何包含 user_id (foreignKey)?
问题描述
我是 python Django rest-framework 的新手,在创建新地址时遇到了这个问题:
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)
提前致谢。
解决方案
发布请求无法保存用户详细信息。尝试将用户实例传递给 serialiser.save() 方法。
推荐阅读
- sql-server - SQL Server 2012 - 如何访问安装媒体以向现有安装添加功能
- apache-kafka - 无法在 Windows 上设置 kafka 服务器
- python - 调用另一个 lambda 传递信息并读取 lambda 上的信息
- python - Python:使用python从一行中提取以数字开头的匹配单词
- php - 如何通过遍历多个表并将其与字符串进行比较来正确获取名称?
- javascript - jQuery onClick 行将行移动到另一个表
- mysql - 大面积Haversine公式
- wso2 - wso2 esb 如何重用部分代码
- c# - 如何使用反射调用具有泛型返回类型的泛型方法
- spring-kafka - Spring Kafka 重试日志记录