在django-REST中,可以通过ForeignKey字段来建立模型之间的关联关系。ForeignKey字段表示一个模型与另一个模型之间的一对多关系,其中一个模型是父模型,另一个模型是子模型。
要从ForeignKey字段获取父值,可以使用点符号(.)来访问父模型的属性。假设有两个模型A和B,其中B有一个ForeignKey字段指向A,可以通过以下方式获取父值:
示例代码如下:
# models.py
from django.db import models
class A(models.Model):
name = models.CharField(max_length=100)
class B(models.Model):
a = models.ForeignKey(A, on_delete=models.CASCADE)
value = models.IntegerField()
# views.py
from rest_framework import generics
from .models import B
from .serializers import BSerializer
class BDetailView(generics.RetrieveAPIView):
queryset = B.objects.all()
serializer_class = BSerializer
# serializers.py
from rest_framework import serializers
from .models import B
class BSerializer(serializers.ModelSerializer):
a_name = serializers.CharField(source='a.name', read_only=True)
class Meta:
model = B
fields = ['id', 'value', 'a_name']
在上面的示例中,我们定义了两个模型A和B,B模型有一个ForeignKey字段指向A模型。在BSerializer中,我们使用了a_name = serializers.CharField(source='a.name', read_only=True)
来获取父模型A的name属性,并将其命名为a_name。
通过以上设置,当我们访问B模型的详情视图时,可以获取到父模型A的name属性值。
这种方式适用于django-REST中的序列化器,可以在序列化器中通过设置source参数来获取父模型的属性值。在实际应用中,可以根据具体的业务需求进行相应的调整和扩展。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云