У меня есть следующие модели
class IndexMaster(models.Model):
index_id = models.IntegerField(primary_key=True)
index_name = models.CharField(max_length=100)
index_on = models.CharField(max_length=10)
index_type = models.CharField(max_length=20)
def __str__(self):
return self.index_id
class Meta:
managed = True
db_table = 'index_master'
class StockMaster(models.Model):
stock_id = models.CharField(primary_key=True, max_length=100)
stock_name = models.CharField(max_length=100)
class Meta:
managed = True
db_table = 'stock_master'
class StockIndexMap(models.Model):
index = models.ForeignKey(IndexMaster, on_delete=models.CASCADE, related_name= 'StockMaster_StockIndexMap_set')
stock = models.ForeignKey(StockMaster, to_field ='stock_id', on_delete=models.CASCADE)
class Meta:
managed = True
db_table = 'stock_index_map'
# unique_together = (('index', 'stock'),)
class StockData(models.Model):
stock = models.ForeignKey(StockMaster, on_delete=models.CASCADE)
day_high = models.FloatField()
day_low = models.FloatField()
lastvalue = models.FloatField()
change = models.FloatField()
percentchange = models.FloatField()
class Meta:
managed = True
db_table = 'stock_data'
serializer.py
from rest_framework import serializers
from .models import IndexMaster,StockIndexMap, StockMaster, StockData
from indexdata.serializers import IndexMasterSerializer
class StockMasterSerializer(serializers.ModelSerializer):
# stock = StockIndexMapSerializer()
class Meta:
model = StockMaster
# fields = ['index', 'stock_id', 'stock_name']
fields = [ 'stock_id', 'stock_name']
class StockIndexMapSerializer(serializers.ModelSerializer):
# index = IndexMasterSerializer()
stock = StockMasterSerializer()
class Meta:
model = StockIndexMap
fields = [ 'stock']
class StockDataSerializer(serializers.ModelSerializer):
stock = StockMasterSerializer()
class Meta:
model = StockData
fields = ['stock','day_high', 'day_low', 'lastvalue', 'change', 'percentchange']
в views.py
class StockMulti(generics.ListAPIView):
queryset = StockIndexMap.objects.all()
serializer_class = StockIndexMapSerializer
pagination_class = CustomPagination
permission_classes = [permissions.IsAuthenticatedOrReadOnly]
def get_queryset(self):
query_params = self.request.query_params
indexID = query_params.get('id', None)
Q1 = Q(index_id = indexID)
return StockIndexMap.objects.filter(Q1)
Вывод JSON, который я получение
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept
{
"links": {
"next": "http://localhost:8000/stock/topstock?id=1&page=2",
"previous": null
},
"total": 50,
"page": 1,
"page_size": 4,
"results": [
{
"stock": {
"stock_id": "BHRI.NS",
"stock_name": "BHARTI INFRATEL LTD"
}
},
{
"stock": {
"stock_id": "BJAUT IS Equity",
"stock_name": "BAJAJ AUTO LTD"
}
}
]
}
то, что я хочу, - это чтобы в элементе stocks также были извлечены данные из модели StockMaster. Поток таков: у меня есть Index Master и Stock Master. Имеются данные о запасах, связанные с основной записью запасов. Затем у меня есть StockIndexMap, который сопоставляет все элементы индекса с соответствующими элементами акций. Я могу получить список акций в индексе, но не могу получить цены на акции. Последний элемент JSON должен выглядеть примерно так:
{
"stock": {
"stock_id": "BJAUT IS Equity",
"stock_name": "BAJAJ AUTO LTD"
"lastvalue": 999.99
"change": 99.99
}
}
Спасибо за вашу помощь