我正在使用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', )
视图集:
class FavoriteViewSet(viewsets.ModelViewSet):
http_method_names = ['get','post' ]
serializer_class = FavoriteSerializer
queryset = Favorites.objects.all()
这是我的第一个输出。然后我同步我的属性Serializer并得到这个:
这是我需要的输出,但它会在帖子中产生问题。在帖子中我只需要user_id和property_id,但它使我的帖子形式如下:
有关我如何实现结果的任何建议吗?
答案 0 :(得分:2)
serializers.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', )
views.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