我发布了一个我从html表单构建的json请求:
{"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)
我的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:NOT NULL约束失败:cours_lesson.discipline_id
我是Django的新手,我不知道这是定义外键的正确方法,但这是我发现的唯一方法。
答案 0 :(得分:1)
错误说" NOT NULL约束失败"。这意味着您在数据库表上没有任何价值。你必须像这样设置你的外键。
discipline = models.ForeignKey(Discipline, on_delete=models.CASCADE,null=True)
之后,迁移您的数据库。现在在Lesson表中,学科行用Null填充,以便稍后可以将它设置为另一个变量。