У меня есть вложенные отношения между двумя сериализаторами.По какой-то причине дочерний сериализатор не показывает все свои данные.Я вижу только тип, который ссылается на класс, над которым работает сериализатор, и идентификатор.
Я попытался найти это и нашел много разных способов кодирования этих отношений.Все, что я нашел, заставило меня поверить, что то, что у меня есть, должно работать.Я потратил неделю на изучение этого вопроса, и я совершенно в тупике.
РЕДАКТИРОВАТЬ для получения дополнительной информации: Я подписался на это: https://www.django -rest-framework.org / api-guide / relations /# nested-Relations и настроить его так же, как написано в их документации (насколько мне известно) Их результат - больше, чем я ожидаю получить.Это результат непосредственно под заголовком NESTED RELATIONSHIPS./ EDIT
Сериализаторы
class QuotelineSerializer(serializers.ModelSerializer):
# info = QuoteinfoSerializer(many=True, read_only=True)
class Meta:
model = Quoteline
fields = (
'lineid',
'quoteid',
'linenumber',
'lineitem',
'enabled',
...
'pricebookprice',
)
class QuoteinfoSerializer(serializers.ModelSerializer):
lines = QuotelineSerializer(many= True)
class Meta:
model = Quoteinfo
fields = (
'quoteid',
'quotenumber',
'quotecustomer',
'quotecsr',
'quoteuser',
...
'lines'
)
Модели
class Quoteinfo(models.Model):
quoteid = models.AutoField(db_column='QuoteID', primary_key=True)
quotenumber = models.CharField(db_column='QuoteNumber', max_length=30)
quotecustomer = models.CharField(db_column='QuoteCustomer', max_length=13)
quotecsr = models.CharField(db_column='QuoteCSR', max_length=25, blank=True, null=True)
salesrep = models.CharField(db_column='SalesRep', max_length=3, blank=True, null=True)
...
quoted = models.CharField(db_column='Quoted', max_length=30, blank=True, null=True)
market = models.CharField(db_column='Market', max_length=25, blank=True, null=True)
def __str__(self):
return self.quotenumber
class Meta:
managed = False
db_table = 'QuoteInfo'
class Quoteline(models.Model):
# head = models.ForeignKey(Quoteinfo, related_name='lines', on_delete=models.CASCADE)
lineid = models.AutoField(db_column='LineID', primary_key=True)
quoteid = models.ForeignKey(Quoteinfo, related_name='lines', db_column='QuoteID', on_delete=models.CASCADE)
linenumber = models.IntegerField(db_column='LineNumber', blank=True, null=True)
...
pricebookprice = models.DecimalField(db_column='PriceBookPrice', max_digits=19, decimal_places=4, blank=True, null=True)
class Meta:
managed = False
db_table = 'QuoteLine'
Я ожидаю, что получу что-то вроде
"data": [
{
"type": "quotes",
"id": "156711",
"attributes": {
"quoteid": 156711,
"quotenumber": "022819-513240-1X"
... more fields matching model + serializer
"market": "K-12 "
},
"relationships": {
"lines": {
"data": [
{
"type": "Quoteline",
"id": "596214"
^^^^^^^^ This is all i get
THIS IS WHERE MY PROBLEM LIES
I expect to see
"attributes":{
A bunch of fields matching models here
}
^^^^^^^^^ this is what I want that is missing
},