我正在研究具有以下模型的Django项目:
class PlaceQuerySet(models.QuerySet):
def filter_by_province(self, province, lang='se'):
query = self.filter(province=province, is_published=True)
.annotate(thumbnail_uuid=models.F('image_album__default__uuid'))
.prefetch_related()
if lang == 'se':
return query.annotate(city_name=models.F('city__alt_names__name'),)
else:
return query.annotate(city_name=models.F('city__name'))
class BasePlaceModel(models.Model):
class Meta:
abstract = True
objects = PlaceQuerySet.as_manager()
name = models.CharField(max_length=50))
...
class Hotel(BasePlace):
popularity = models.PositiveSmallIntegerField(default=0)
...
由于某些原因,我需要创建一个具有不同字段的新酒店模型。所以我将其添加到我的模型中。
class HotelModel(BasePlace):
new_popularity = models.PositiveSmallIntegerField(default=1)
...
最终,我想使用DRF访问新的 HotelModel 。这是我的代码:
class NewHotelViewSet(viewsets.ModelViewSet):
serializer_class = HotelSerializer
permission_classes = (IsAuthenticatedOrReadOnly, )
queryset = HotelModel.objects.all()
class HotelSerializer(serializers.ModelSerializer):
class Meta:
model = HotelModel
fields = (
'id', 'blahblah'
)
奇怪的部分是当我查询NewHotelViewSet时,它在新模型为空的情况下使用数据进行响应。执行 HotelModel.objects.all()会显示相同的结果。我什至检查了Postgres,但没有数据。
有人可以向我解释吗? 谢谢。