【发布时间】:2017-02-21 19:57:34
【问题描述】:
这是 Django ORM 模型
class A(models.Model):
...
class B(models.Model):
a = models.Foreignkey(A, on_delete=models.CASCADE)
class C(models.Model):
a = models.Foreignkey(A, on_delete=models.CASCADE)
这里是序列化器:
class ASerializer(serializers.ModelSerializer):
class Meta:
model = A
class BSerializer(serializers.ModelSerializer):
a = ASerializer(many=False)
class Meta:
model = B
class CSerializer(serializers.ModelSerializer):
a = ASerializer(many=False)
class Meta:
model = C
B 和 C 正在按预期工作。
问题一:
现在,如果我想通过 b = BSerializer(many=False) 和 c = CSerializer(many=False) 从序列化器 A 获取 B 和 C 的数据。我会得到一个错误,NameError: name 'BSerializer' is not defined 如果我将 B 和 C 序列化器放在 A 序列化器的错误之上。我该如何解决这个问题?
问题 2:
B 和 C 与 A 具有一对一的关系。因此,在序列化 A 时,它可能没有后续的 B 或 C 或 B 和 C 表中的数据。 所以,在 ASerializer 中
b = BSerializer(many=False)
c = CSerializer(many=False)
如果特定行的 A 和 C 之间没有关系,则可能会出错。我该如何解决这个问题?
【问题讨论】:
标签: django django-rest-framework django-orm django-serializer