Python 发布一个包含外键的json请求,并用django保存它
我发布了一个json请求,该请求是从html表单生成的:Python 发布一个包含外键的json请求,并用django保存它,python,json,django,Python,Json,Django,我发布了一个json请求,该请求是从html表单生成的: {"discipline":"Mathematiques","date":"2017-12-03"} 我使用这个Django视图来处理这个问题: def cours_list(request): if request.method == 'POST': data = JSONParser().parse(request) serializer = LessonSerializer(data=dat
{"discipline":"Mathematiques","date":"2017-12-03"}
我使用这个Django视图来处理这个问题:
def cours_list(request):
if request.method == 'POST':
data = JSONParser().parse(request)
serializer = LessonSerializer(data=data)
if serializer.is_valid():
serializer.save()
return JSONResponse(serializer.data, status=201)
return JSONResponse(serializer.errors, status=400)
My models.py包含:
class Discipline(models.Model):
name = models.CharField(max_length=200)
class Lesson(models.Model):
discipline = models.ForeignKey(Discipline, on_delete=models.CASCADE)
date = models.DateField()
regular_slot = models.BooleanField(default=False)
我的序列化程序编写如下:
class DisciplineSerializer(serializers.ModelSerializer):
class Meta:
model = Discipline
fields = ('name')
class LessonSerializer(serializers.ModelSerializer):
discipline = serializers.RelatedField(source='Discipline', read_only=True);
class Meta:
model = Lesson
fields = ('discipline', 'date', 'regular_slot')
但是,我有一个错误是:
django.db.utils.IntegrityError:非空约束失败:课程\课程\规程\ id
我是Django新手,我不认为这是定义外键的正确方法,但这是我找到的唯一方法 错误表示“非空约束失败”。这意味着您的数据库表上没有任何值。你必须这样设置你的外键
discipline = models.ForeignKey(Discipline, on_delete=models.CASCADE,null=True)
之后,迁移数据库。现在在您的课程表中,规程行用Null填充,以便以后可以将其设置为另一个变量。您使用的是
django rest framework
?如果是这样,请查看,以了解在序列化程序中处理关系字段的正确方法。您什么时候收到错误?你能发布完整的回溯吗?如果在加载/反序列化json时发生这种情况,也可以发布json。如果试图保存课程
对象而不指定相关的规程
,则可能会发生这种情况。如果再次出现错误,请添加blank=True。我不确定没有这个它是否有效。