我有这个型号:
class Discipline(models.Model):
name = models.CharField(max_length=200)
class Lesson(models.Model):
discipline = models.ForeignKey(Discipline, on_delete=models.CASCADE, null=True)
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')
我有一个处理JSON请求并保存数据的视图:
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)
我的JSON请求如下:
{"discipline":"Mathematiques","date":"2017-12-03"}
但是,我有一个错误说:
'Lesson'对象没有属性'Discipline'
我认为这是因为discipline
中的属性Lesson
仅指ID,而不是Discipline
类型。我无法找到解决这个问题的方法。我定义foreignKey的方式是不正确的?
当我从JSON请求收到Discipline
对象时,如何在此处插入foreignKey引用?
答案 0 :(得分:0)
我也会帮助你:)
class DisciplineSerializer(serializers.ModelSerializer):
class Meta:
model = Discipline
fields = ('name')
class LessonSerializer(serializers.ModelSerializer):
discipline = DiscliplineSerializer()
class Meta:
model = Lesson
fields = ('discipline', 'date', 'regular_slot')
据我所知,这样做就足够了。
编辑:您的错误原因是您编写了“source =”Discipline“”,但您的课程模型中没有名为Discipline的字段。因此,它会出错。