我正在使用 django rest 框架将 property_id 作为外键发布到收藏夹表中,并基于外键我想从属性表中获取所有字段。
class Favorites(models.Model):
"""Store favorite property"""
user_id = models.ForeignKey(User, on_delete=models.CASCADE)
property_id = models.ForeignKey(Property, on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True, blank=True)
序列化器:
class FavoriteSerializer(serializers.ModelSerializer):
"""Favorite Properties serializer"""
class Meta:
model = Favorites
fields = ('user_id','property_id', )
View 集:
class FavoriteViewSet(viewsets.ModelViewSet):
http_method_names = ['get','post' ]
serializer_class = FavoriteSerializer
queryset = Favorites.objects.all()
这是我的第一个输出。然后我同步我的属性 Serializer 并得到这个:
这是我需要的输出,但在发布过程中会产生问题。在发布期间我只需要 user_id 和 property_id 但它使我的发布形式如下:
有什么建议可以实现我的结果吗?
请您参考如下方法:
序列化器.py
class FavoriteCreateSerializer(serializers.ModelSerializer):
"""Favorite Properties serializer"""
class Meta:
model = Favorites
fields = ('user_id','property_id', )
class FavoriteListSerializer(serializers.ModelSerializer):
property_id = PropertySerializer(read_only=True)
class Meta:
model = Favorites
fields = ('user_id','property_id', )
View .py
class FavoriteViewSet(viewsets.ModelViewSet):
http_method_names = ['get','post' ]
serializer_class = FavoriteSerializer
queryset = Favorites.objects.all()
def get_serializer_class(self):
if self.action == 'create':
return FavoriteCreateSerializer
else:
return self.serializer_class
