我有以下情况:用户可以拥有多个个人资料。这是我的模特课。像这样的例子:
models.py :
class Profile:
name=models.Charfield()
class UserProfile:
user=models.ForeignKey(User)
profile = models.ForeignKey(Profile)
serializers.py :
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = '__all__'
我在这里通过JSON返回我的所有用户,但我想添加一个名为 profiles 的新字段,该字段将返回用户拥有的所有ID配置文件。
{ "id": 1,
"name" : "John"
....
profiles = [1, 2]
}
如何获取(查询)用户拥有的所有配置文件并将其添加到我的最终JSON中?
答案 0 :(得分:3)
将字段配置文件声明为PrimaryKeyRelatedField
profiles = serializers.PrimaryKeyRelatedField()
默认情况下,此字段是可读写的,但您可以使用read_only标志更改此行为。
请参阅docs
答案 1 :(得分:0)
1)简化关系 - 在这种情况下只需要User和Profile模型,您不必在UserProfile表中存储显式关系,因为可以在Profile模型中完成相同的操作,只要您不需要用户与其他用户分享个人资料。
2)创建ProfileSerializer
3)向UserSerializer添加配置文件字段,其中包含许多= True属性&在'source'属性中提供引用 请回复这些文档,因为它们非常好 http://www.django-rest-framework.org/api-guide/serializers/
另外需要提及的是,创建UserProfile是在depricated中,在新版本的Django中,您可以使用设置属性AUTH_USER_MODEL扩展基本用户模型