【发布时间】:2017-06-11 09:24:02
【问题描述】:
其实我没有表单,我目前正在使用ViewSet创建API。
我有两个模型,一个是普通用户模型,一个是组模型,它使用一个名为 creator 的字段和外键给用户
我创建了一个序列化程序,然后用它来验证 POST 输入,不知何故我不断收到错误提示
null value in column "creator_id" violates not-null constraint
我可以理解并且我也测试过这是因为creator_id 在我尝试发布时为空,但我确实输入了creator_id。我是否以错误的方式输入它,或者我如何获取外键以保存它?
我的组模型是这样的
class Group(Model):
creator = ForeignKey(User,
null=True, // I used this to test I am right with the error
blank=True, // I used this to test I am right with the error
on_delete=CASCADE,
related_name="%(class)ss",
related_query_name="%(class)s")
group_name = CharField(max_length=256, unique=True)
created_at = DateTimeField(auto_now_add=True)
def __unicode__(self):
return self.group_name
再次,我添加null=True, blank=True 是因为我想看看我是否正确,这是因为creator_id 不能为空,是的,我是对的,添加这两个字段后,我没有得到错误了。
我的 GroupSerializer
class GroupSerializer(ModelSerializer):
group_id = SerializerMethodField()
creator_name = SerializerMethodField()
creator_id = SerializerMethodField()
class Meta:
model = Group
fields = ['group_id', 'group_name', 'creator_id', 'creator_name']
def get_group_id(self, obj):
return obj.id
def get_creator_name(self, obj):
return obj.creator.tutor_name
def get_creator_id(self, obj):
return obj.creator.id
def create(self, validated_data):
return Group.objects.create(**validated_data)
我的观点.py
@csrf_exempt
def create(self, request):
data = GroupSerializer(data=request.data) // this would return the `group_name` and `creator_id` I entered
if data.is_valid(): // this would return true
data.save()
return Response({'status': True})
return Response({'status': False, 'message': data.errors}, status=400)
我尝试使用...发帖
{
"group_name": "bridge",
"creator_id": 1
}
试过"creator_id": "1"和"creator": "1"
仍然出现同样的错误...
我该如何解决这个问题?
提前致谢
【问题讨论】:
标签: python mysql django foreign-key-relationship