我正在尝试我的 GeneratedNameDetailsSerializer 与 GenarateNameSerializer 的关系。每个名字都有一个关系模型 ForeignKey
例子:
序列化器.py
类 GenarateNameSerializer(ModelSerializer):
class Meta:
model = GenarateName
fields = ['name','generatename']
结果:-
[ {“名称”:7,“生成名称”:“anawerWORK”},
{
"name": 7,
"generatename": "anawerMatch"
},
{
"name": 7,
"generatename": "anawerWell"
},
{
"name": 7,
"generatename": "anawerTALK"
},
{
"name": 7,
"generatename": "anawerPLUS"
},
{
"name": 7,
"generatename": "anawerGlobal"
},
{
"name": 7,
"generatename": "anawerContext"
}
]
#Serializers 与 GenarateNameSerializer 的关系
类 GeneratedNameDetailsSerializer(ModelSerializer):
generatenames=GenarateNameSerializer(read_only=True, many=True)
class Meta:
model = NameGenerator
fields = ['name','generatenames']
结果::
{“名称”:“sdfsf”}
视图.py
类 Generate_BusinessDetails(RetrieveAPIView):
serializer_class = GeneratedNameDetailsSerializer
permission_classes = (AllowAny,)
lookup_url_kwarg = 'name_id'
def get_object(self):
name_id = self.kwargs.get('name_id')
print('print Generate_BusinessDetails', name_id)
objectss = get_object_or_404(NameGenerator, name=name_id)
print(" objectss", objectss)
generatename=GenarateName.objects.filter(name=objectss)
for generate in generatename:
print(" generate", generate)
obj ={
'name':objectss,
'generatename':generate
}
print(" obj", obj)
return obj
类 GenerateNameListAPIView(ListAPIView):
serializer_class = GenarateNameSerializer
permission_classes = (AllowAny,)
queryset=GenarateName.objects.all()
lookup_url_kwarg = 'name_id'
# def get_object(self):
# name_id = self.kwargs.get('name_id')
# objectss = get_object_or_404(NameGenerator, name=name_id)
# print('objectss ', objectss)
# queryset = GenarateName.objects.filter(name=objectss)
# return queryset
模型.py
类名称生成器(模型。模型):
name_id=models.CharField(verbose_name=_('name_id'), max_length=100, null=True, blank=True)
name = models.CharField(verbose_name=_('name'),max_length=50, null=True, blank=True)
category=models.ForeignKey(Category,verbose_name=_('category'), null=True, blank=True, related_name='cname',
on_delete=models.CASCADE)
def __str__(self):
return str(self.name)
类 GenarateName(models.Model):
name = models.ForeignKey(NameGenerator, verbose_name=_('name'), null=True, blank=True, related_name='genaratenames',
on_delete=models.CASCADE)
generatename = models.CharField(max_length=500, verbose_name=_('generatename'), null=True, blank=True)
def __str__(self):
return str(self.generatename)