DRF 3.7.1の新機能で、POSTを使用して外部キーを含むオブジェクトを作成しようとすると問題が発生します。学校は(school_id =「ABC」が存在すると仮定すると、外部キーでレコードを作成するDjango Rest Framework
class SchoolSerializer(serializers.ModelSerializer):
class Meta:
model = School
fields = ('school_id','school_name','school_address')
class StudentSerializer(serializers.ModelSerializer):
school = SchoolSerializer()
class Meta:
model = Student
fields = ('student_name','school')
:シリアライザがどのように見える
class School(models.Model):
school_id = models.CharField(primary_key=True,max_length=10)
school_name = models.CharField(max_length=100)
school_address = models.CharField(max_length=255)
# other fields omitted
class Student(models.Model):
student_name = models.CharField(max_length=100)
# other fields omitted
school = models.ForeignKey('School')
:以下の例 - 学校のモデル(1校は、多くの学生を持っている) - シナリオは、私が学生を持っています)私は学生を作成するには、このJSONを投稿しようとしている:
{
"student_name": "John Doe",
"school_id": "ABC"
}
が、エラーを取得しています:
AssertionError at /mytest/ The
.create()
method does not support writable nested fields by default. Write an explicit.create()
method for serializermyapp.serializers.StudentSerializer
, or setread_only=True
on nested serializer fields.
これを修正する方法がわかりません。私は学校の外部キーについて何を参照する必要がありますか?事前