我剛開始使用Django rest框架,這可能是一個老問題,但到目前爲止我還沒有在SO上找到任何適當的答案。Django REST:結合兩個模型
我想添加一些額外的配置文件字段到DRF提供的現有用戶模型。閱讀文檔後,我選擇創建一個新的CustomUser模型,並通過外鍵將其與默認的用戶模型相關聯。
當我試圖序列化CustomUser模型時出現了問題。我想json是這樣的:
{
"username" : "from_default_user_model",
"extra_field" : "from_custom_user_model"
}
但通過使用嵌套序列化器如下,我得到了嵌套json表示法。
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('username',)
class CustomUserSerializer(serializers.ModelSerializer):
user = UserSerializer()
class Meta:
model = CustomUser
fields = ('extra_field',)
嵌套一個看起來是這樣的:
{
"username" : "from_default_user_model",
"user" :
{
"extra_field" : "from_custom_user_model"
}
}
我要的是某種類似於數據庫的兩個表,它只是產生一個簡單的表格,而不是一個嵌套之間的連接。我怎麼能做到這一點?
這解決了我的問題,但再次指定每個字段的類型可能有點乏味,特別是當您不確定原始字段類型時。例如,您必須指定'last_login = serializer.DateTimeField(source ='user.last_login')'而不是'DateField(source ='user.last_login')''。後者會讓你斷言失敗。 – AveryLiu
是的,這可能是乏味的,但你只會爲用戶模型做它,因此它不是太多額外的工作。 –