如何在具有相似字段值的 django rest 框架中加入两个序列化程序
How can I join two serilaizers in django rest framework that have a similar field value
我的 Django Restframework 中有两个模型。在我看来,我想获取所有属性,并且对于每个 属性,我都会获取创建它的用户的配置文件数据。
我怎样才能做到这一点?
示例:
#models.py
from django.contrib.auth.models import User
class Profile(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
mobile = models.CharField(max_length=200)
location = models.CharField(max_length=200)
class Properties(models.Model):
title = models.CharField(max_length=200)
price = models.CharField(max_length=200)
category = models.CharField(max_length=200)
created_by = models.ForeignKey(User, on_delete=models.CASCADE)
#serializers.py
class ProfileSerializer(serializers.ModelSerializer):
class Meta:
model = Profile
fields = '__all__'
class PropertySerializer(serializers.ModelSerializer):
class Meta:
model = Property
fields = [
'title','price','category','created_by'
]
#views.py
class PropertiesView(generics.ListAPIView):
serializer = PropertySerializer
queryset = Property.objects.all()
试试:
如果您想要完整的个人资料数据,那么-
首先在properties model(createby field)中定义相关名称,如-
class Profile(models.Model):
---
---
class Properties(models.Model):
---
created_by =
models.ForeignKey(User, on_delete=models.CASCADE, related_name = "abc")
然后在序列化器中使用相关名称,并将其包含在诸如 -
的字段中
class PropertySerializer(serializers.ModelSerializer):
abc = ProfileSerializer()
class Meta:
model = Property
fields = [
'title','price','category','created_by', 'abc'
]
如果您需要特定的个人资料数据,那么-
class ProfileSerializer(serializers.ModelSerializer):
class Meta:
model = Profile
fields = '__all__'
class PropertySerializer(serializers.ModelSerializer):
mobile = serializers.SerializerMethodField()
class Meta:
model = Property
fields = [
'title','price','category','created_by', "mobile",
]
def get_mobile(self, instance):
return instance.created_by.mobile if instance.created_by else ''
如果您想在您的属性中获取配置文件数据,请查看下方 -
class PropertySerializer(serializers.ModelSerializer):
mobile = serializers.SerializerMethodField()
location = serializers.SerializerMethodField()
class Meta:
model = Property
fields = [
'title','price','category','created_by', "mobile", "location"
]
def get_mobile(self, instance):
return Profile.objects.get(user = instance.created_by).mobile
def get_location(self, instance):
return Profile.objects.get(user = instance.created_by).location
我的 Django Restframework 中有两个模型。在我看来,我想获取所有属性,并且对于每个 属性,我都会获取创建它的用户的配置文件数据。
我怎样才能做到这一点?
示例:
#models.py
from django.contrib.auth.models import User
class Profile(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
mobile = models.CharField(max_length=200)
location = models.CharField(max_length=200)
class Properties(models.Model):
title = models.CharField(max_length=200)
price = models.CharField(max_length=200)
category = models.CharField(max_length=200)
created_by = models.ForeignKey(User, on_delete=models.CASCADE)
#serializers.py
class ProfileSerializer(serializers.ModelSerializer):
class Meta:
model = Profile
fields = '__all__'
class PropertySerializer(serializers.ModelSerializer):
class Meta:
model = Property
fields = [
'title','price','category','created_by'
]
#views.py
class PropertiesView(generics.ListAPIView):
serializer = PropertySerializer
queryset = Property.objects.all()
试试:
如果您想要完整的个人资料数据,那么-
首先在properties model(createby field)中定义相关名称,如-
class Profile(models.Model):
---
---
class Properties(models.Model):
---
created_by =
models.ForeignKey(User, on_delete=models.CASCADE, related_name = "abc")
然后在序列化器中使用相关名称,并将其包含在诸如 -
的字段中class PropertySerializer(serializers.ModelSerializer):
abc = ProfileSerializer()
class Meta:
model = Property
fields = [
'title','price','category','created_by', 'abc'
]
如果您需要特定的个人资料数据,那么-
class ProfileSerializer(serializers.ModelSerializer):
class Meta:
model = Profile
fields = '__all__'
class PropertySerializer(serializers.ModelSerializer):
mobile = serializers.SerializerMethodField()
class Meta:
model = Property
fields = [
'title','price','category','created_by', "mobile",
]
def get_mobile(self, instance):
return instance.created_by.mobile if instance.created_by else ''
如果您想在您的属性中获取配置文件数据,请查看下方 -
class PropertySerializer(serializers.ModelSerializer):
mobile = serializers.SerializerMethodField()
location = serializers.SerializerMethodField()
class Meta:
model = Property
fields = [
'title','price','category','created_by', "mobile", "location"
]
def get_mobile(self, instance):
return Profile.objects.get(user = instance.created_by).mobile
def get_location(self, instance):
return Profile.objects.get(user = instance.created_by).location