从 django 模型创建 javascript 对象(类)

Posted

技术标签:

【中文标题】从 django 模型创建 javascript 对象(类)【英文标题】:Create javascript object (class) from django model 【发布时间】:2014-07-25 17:53:29 【问题描述】:

我正在开发一个单页应用程序,它将从大约十几个不同的 django 模型加载数据,允许用户操作数据,然后将所有更改保存回数据库。

我可以通过序列化查询集的结果来将 django 模型“传递”到模板。例如,我有一个模型 Person:

class Person(models.Model):
    id = models.AutoField(primary_key=True)
    age = models.IntegerField()
    name = models.CharField(max_length=250)

现在,在我看来,我可以通过序列化将“人”对象以 json 格式传递给模板

person_object = serializers.serialize("json", Person.objects.filter(id=1))

然后,在我的 javascript 中:

var someperson =  data|safe ;

但是,我希望能够在客户端创建一个“新”人,就好像 Person 是一个 javascript 类而不仅仅是一个 json 对象:

var person2 = new Person(id=5,age=33m,name="john");

有没有办法让我的 javascript“类”继承 Django 数据模型?还是我需要在 django 和 javascript 之间手动重新创建我的数据模型?

【问题讨论】:

【参考方案1】:

你可以把它作为一个整体放在一个字符串中

person = 'new Person(id="%(id)s",age="%(age)s",name="%(name)s")' %
 'id':person_instance.id , ....

然后将它作为上下文变量发送到模板,所以它看起来像这样

var person2 =  person  ;

【讨论】:

这并不能真正解决我遇到的问题。我可以毫无问题地将人“对象”从 django 获取到 javascript。在客户端创建新对象是有问题的,因为 javascript 中没有相应的“类”(函数)可以让我构造新的人员对象。当然,我可以在技术上手动模拟数据模型,但这似乎是一个糟糕的解决方案,因为还需要在 javascript 构造函数中对模型进行更改。

以上是关于从 django 模型创建 javascript 对象(类)的主要内容,如果未能解决你的问题,请参考以下文章

是否可以使用 javascript 从 django 模型数据库中获取数据?

如何通过 javascript 从管理页面检索 Django 模型 ID

如何从 django 的表单中获取数据?

Django Admin Cookbook-24如何从两个不同的模型创建一个Django Admin后台页面

Django 从一个表单创建多个对象(相同模型)

如何在javascript中获取django表单值而不将其保存到模型中