django model_to_dict, включая иностранные ключи, указывающие на модель - PullRequest
0 голосов
/ 02 июля 2018

У меня есть модель:

class Main(models.Model):
    name = models.CharField(max_length=99)

Который имеет несколько строк:

class First(models.Model):
    Main = models.ForeignKey(Main, on_delete=models.CASCADE)
    option = models.ForeignKey(Option, on_delete=models.CASCADE)


class Second(models.Model):
    Main = models.ForeignKey(Main, on_delete=models.CASCADE)
    option = models.ForeignKey(Option, on_delete=models.CASCADE)

Я пытаюсь отправить определенный объект "main" со всеми его строками (первый и второй). Но всякий раз, когда я делаю:

'main': model_to_dict(main) 

Он будет передавать значение name только из класса Main и игнорировать все встроенные значения.

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

'main': main.__dict__

не работает.

Я попробовал свой собственный model_to_dict здесь:

def model_to_dict(instance, include=None, exclude=None):
    fields = instance._meta.concrete_fields
    if include is not None:
        return {f.attname: getattr(instance, f.attname) for f in fields if f.name in include}
    if exclude is not None:
        return {f.attname: getattr(instance, f.attname) for f in fields if f.name not in exclude}
    return {f.attname: getattr(instance, f.attname) for f in fields}

Также не прошли строки.

Есть ли простой способ передать их через JsonResponse? Спасибо

1 Ответ

0 голосов
/ 02 июля 2018

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

dict = model_to_dict(main.First)

Затем добавьте его в словарь, содержащий json родительской модели.

Или, что еще лучше, вы даже можете настроить метод model_to_dict для обработки встроенных строк, я думаю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...