【发布时间】:2018-07-25 22:37:50
【问题描述】:
我声明了以下模型:
class Parent(models.Model):
active = models.BooleanField(default=False)
class Child(Parent)
name = models.CharField(max_length=100, unique=True)
和序列化器:
class ChildSerializer(serializers.ModelSerializer):
class Meta:
model = Child
fields = ('active', 'name')
乍一看似乎一切正常,它是在可浏览的 api 中正确生成的。尽管如此,当我想更新这两个字段时,只会更新“活动”。
当我做回报时,我会收到正确的回应:
{
"active": true,
"name": "foo"
}
但是名称字段根本没有更新。我更进一步并尝试在序列化程序中实现自定义更新方法:
def update(self, instance, validated_data):
print(str(type(instance)))
return instance
在那之后,在 put 响应中我只收到活动字段?:
{
"active": true,
}
在控制台上更令人惊讶:
rest_1 | <class 'applic.models.Person'>
我完全迷失了 :) 为什么序列化程序将明确提供的 Child 模型视为 Person ?如何强制 ChildSerializer 在 Child 模型上工作?
提前谢谢你 彼得
【问题讨论】:
-
你的模型不相关是什么关系是1对1、1对多..等等?
-
您好,当您从另一个模型派生一个模型时,它们的关系是 1 对 1(至少在 db 中看起来像这样),除此之外,没有其他关系
-
好的,问题出在更新但创建工作正常?
-
嗨,是的,创作工作正常
-
您可以添加您的观点吗?
标签: django django-rest-framework django-rest-viewsets