我正在努力找出 SlugRelatedField 的查询集。
我的数据是这样的,我有一堆Object
属于 a 的实例Project
。一个项目有一个独特的“顶”Object
. Object
仅当它们位于不同的下面时才可以具有相同的名称Project
s.
class Object(models.Model):
project = models.ForeignKey('Project', null=False, related_name='objs')
name = models.TextField(null=False, db_index=True)
....
class Meta:
index_together = unique_together = ('project', 'name')
class Project(models.Model):
user = models.ForeignKey(get_user_model(), null=False, related_name='+')
name = models.TextField(null=False)
top = models.OneToOneField(Object, null=True, related_name='+')
....
class ObjectSerializer(NonNullSerializer):
class Meta:
model = Object
fields = ('name',)
class ProjectSerializer(NonNullSerializer):
objs = ObjectSerializer(many=True, required=False)
top = serializers.SlugRelatedField(slug_field='name', queryset=Object.objects.filter(????))
class Meta:
model = Project
fields = ('id', 'name', 'objs', 'top')
我的查询集会是什么样子top
如果我只想找到一个Object
那属于正确的Project
?换句话说,如何反序列化:
[{
'name' : 'Project1',
'objs' : [{
'name': 'One'
}],
'top': 'One'
},
{
'name' : 'Project2',
'objs' : [{
'name': 'One'
}],
'top': 'One' <-- This should point to One under Project2, not One under Project1
}]