【发布时间】:2020-11-05 05:20:49
【问题描述】:
以前有人问过这个问题,但我无法使用我的案例的任何答案。
我正在尝试使用与此等效的方法,以便在 API 上显示结果。
SELECT denom_name,retail_name,retail_adr
FROM denomination d INNER JOIN Retailer r
ON r.id = d.retailer.id
这些是我的模型(models.py):
class Retailer(models.Model):
retail_name = models.CharField(max_length=30)
retail_addr = models.CharField(max_length=300,null=True)
def __str__(self):
return self.retail_name
class Denomination(models.Model):
denom_name = models.CharField(max_length=1000)
retailer = models.ForeignKey(Retailer, on_delete=models.CASCADE)
我在 views.py 上创建了一个视图集
class DenomRetailViewset(viewsets.ModelViewSet):
queryset = Denomination.objects.select_related('Retailer')
serializer_class = DenomRetailSerializer
但问题就在这里,至少是其中之一。
我正在通过 serializer.py 创建序列化程序
class DenomRetailSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model= retailer,denomination
fields = ('denom_name','retail_name','retail_adr')
但是正如你所看到的,序列化器不能接受两个模型。此外,我对视图集有疑问,queryset = Denomination.objects.select_related('Retailer')。
任何提示都非常受欢迎,因为我开始失去理智。
谢谢。
【问题讨论】:
-
改用
get_queryset(..)? -
如果
Retailer必须存在(如“inner join”所暗示的那样),您需要更改您的queryset,如queryset = Denomination.objects.select_related('Retailer').filter(retailer__isnull=False)
标签: python django django-rest-framework django-rest-viewsets