Как получить вложенный сериализатор, чтобы показать все поля в родительском представлении - PullRequest
0 голосов
/ 14 мая 2019

У меня есть вложенные отношения между двумя сериализаторами.По какой-то причине дочерний сериализатор не показывает все свои данные.Я вижу только тип, который ссылается на класс, над которым работает сериализатор, и идентификатор.

Я попытался найти это и нашел много разных способов кодирования этих отношений.Все, что я нашел, заставило меня поверить, что то, что у меня есть, должно работать.Я потратил неделю на изучение этого вопроса, и я совершенно в тупике.

РЕДАКТИРОВАТЬ для получения дополнительной информации: Я подписался на это: 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
                        },
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...