Yao*_*jie 3 python django django-rest-framework
我有两个模型 A 和 B,它们都有 UUID 作为主键。有一个与B相关的外键A。
class A(models.Model):
id = models.UUIDField(primary_key=True, editable=False)
desc = models.CharField(max_length=128, null=True)
class B(models.Model):
id = models.UUIDField(primary_key=True, editable=False)
desc = models.CharField(max_length=128, null=True)
for_key = models.ForeignKey(A, on_delete=models.SET_NULL, null=True)
Run Code Online (Sandbox Code Playgroud)
我的序列化器来了,
class ASerializer(serializers.ModelSerializer):
id = serializers.UUIDField(format='hex')
class Meta:
model = A
fields = ('id', 'desc')
class BSerializer(serializers.ModelSerializer):
id = serializers.UUIDField(format='hex')
class Meta:
model = B
fields = ('id', 'desc', 'for_key')
Run Code Online (Sandbox Code Playgroud)
如您所见,我已将 uuid(主键)更改为十六进制格式。但格式for_key是默认格式(hex_verbose)。那么如何将模型B中的外键序列化为 十六进制格式呢?for_key
如果您希望能够指定,for_key那么您不能使用@Withnail的答案,因为那里for_key是只读的。您应该使用PrimaryKeyRelatedField。
class BSerializer(serializers.ModelSerializer):
id = serializers.UUIDField(format='hex')
for_key = serializers.PrimaryKeyRelatedField(queryset=A.objects.all())
class Meta:
model = B
fields = ('id', 'desc', 'for_key')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7485 次 |
| 最近记录: |