มีการถามคำถามนี้มาก่อน แต่ฉันไม่สามารถใช้คำตอบใด ๆ ในกรณีของฉันได้
ฉันกำลังพยายามที่จะเทียบเท่าสิ่งนี้เพื่อแสดงผลลัพธ์บน 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')
แต่อย่างที่คุณเห็น serializer ไม่สามารถยอมรับสองรุ่นได้ แถมมีข้อสงสัยเรื่อง viewset อีกด้วย queryset = Denomination.objects.select_related('Retailer')
เรายินดีรับคำแนะนำต่างๆ มากมายเนื่องจากฉันเริ่มสูญเสียสติไปแล้ว
ขอบคุณ.
get_queryset(..)
แทนใช่ไหม - person thebjorn   schedule 15.07.2020Retailer
ต้อง มีอยู่ (ตามนัยของinner join
) คุณจะต้องเปลี่ยนqueryset
ชอบqueryset = Denomination.objects.select_related('Retailer').filter(retailer__isnull=False)
- person Ross Rogers   schedule 15.07.2020