最近我们已经从传统视图转向API视图,因此开始实施DRF。 所以,我的主要问题是我有一个带有外键的模型到另一个模型 说
class Task(model.Models):
created_by=models.ForeignKey(User, null=true, blank=true)
assignees = models.ManyToManyField(User, related_name="assignees", blank=True)
class UserSerializer(serializer.ModelSerializer):
class Meta:
model = User
class TaskSerializer(serializer.ModelSerializer):
created_by = UserSerializer()
assignees = UserSerializer(many=True, required=False)
class Meta:
model=Task
现在当我用User(pk = 10)已经存在的用户创建任务时。 创建新用户而不是分配现有用户。
here is my input:
{
"created_by": {
"id": 10,
"email": "xyz@gmail.com",
"name": "abc def"
},
"assignees": []
}
here is the output:
{
"id":23,
"created_by": {
"id": 11,
"email": "xyz@gmail.com",
"name": "abc def"
},
"assignees": [
]
}
从Linovia那里得到了一些帮助:这个: - https://gist.github.com/xordoquy/78a2d0e2ec85e2d7aadf 但是测试用例失败了。 任何人都可以建议我不需要它。
答案 0 :(得分:0)
可能使用PrimaryKeyRelatedField可以完成工作。
class TaskSerializer(serializer.ModelSerializer):
created_by = serializeres..PrimaryKeyRelatedField()
assignees = UserSerializer(many=True, required=False)
class Meta:
model=Task
将你的json更新为:
{
"created_by": 10,
"assignees": []
}