我遇到了一个我不太明白的奇怪行为。对于模型
class Tenant:
name = models.CharField(max_length=155)
country = models.CharField(max_lengh=155)
我正在使用此序列化器:
class Serializer(serializers.ModelSerializer):
class Meta:
model = Tenant
fields = (name,)
此设置将使我可以保存没有提供国家/地区的租户实例,即使应该在数据库级别(Postgres)上实施null=True
。仅当我在字段中添加country
时,它才会强制执行null=False
约束。
这对我来说似乎很不直观。
编辑:这是我的问题的简单代码示例:
class AppModel(models.Model):
name = models.CharField(max_length=255)
country = models.CharField(max_length=255)
class CrateAppModel(APIView):
def post(self, request, format=None):
serializer = AppModelSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_200_OK)
return Response(serializer.errors, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
class AppModelSerializer(serializers.ModelSerializer):
class Meta:
model = AppModel
fields = (
"name",
)
使用简单的发帖请求,我可以创建一个没有国家/地区字段的实例。 我不明白为什么?。在我的数据库中,country
类型为字符串,为空。