django model_to_dict包括指向模型的外键

时间:2018-07-02 06:31:26

标签: python json ajax django

我有一个模特:

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) 

它将仅在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 :(得分:0)

我可能是错的,但我认为您必须与父类分别调用First和Second类。喜欢:

dict = model_to_dict(main.First)

然后将其添加到包含父模型的json的字典中。

或者,甚至更好的是,您甚至可以自定义model_to_dict方法来处理内联。