【发布时间】:2016-01-14 08:41:47
【问题描述】:
关于 Django ModelSerializer,我的设计如下。 有模型A和模型B。模型B有模型A的外键字段。由于某些原因,我不能直接使用主键序列化模型B。按照我的想法,我需要的是序列化另外两个字段(在模型 A 中是独一无二的)。
我看到 SlugRelatedField 必须用于一个 slug 字段。 我搜索了有一个 NaturalKeyField 可以支持 NaturalKeyField。但看起来它被 django-rest-framework 取代了。但是我检查了django-rest-framework,根本没有这个字段。 有人可以帮忙吗??我该怎么办?
代码如下。 A型
class AssetModel(models.Model):
org = models.ForeignKey(Org, related_name='models')
name = models.CharField(max_length=128)
model_type = models.SmallIntegerField(default = 3,choices = MODEL_TYPE )
directory = models.CharField(max_length = 128)
...
class Meta:
unique_together = ('org', 'name',)
模型 B
class Dataitem(models.Model):
mod = models.ForeignKey(AssetModel, related_name='dataitems')
name = models.CharField(max_length=128)
data_type = models.SmallIntegerField(default =0,choices = DATAITEM_DATATYPE)
...
模型A的序列化器
class AssetModelSerializer(serializers.ModelSerializer):
org = serializers.SlugRelatedField(queryset=Org.objects.all(), slug_field='name')
class Meta:
model = AssetModel
fields = ('org', 'name', 'model_type',..
模型B的序列化器
class DataitemSerializer(serializers.ModelSerializer):
class Meta:
model = Dataitem
fields = ('mod', 'name','data_type'...)
Model A 的主键只是 Django 自动添加的 id。序列化模型B时,需要获取模型A的组织和名称,读写都需要。
【问题讨论】:
-
我认为更好的问题是发布您的模型并解释您想要实现的目标,而不是询问您想到的解决方案