2014-06-04 123 views
3

我正在研究一个单页面应用程序,它将加载来自大约12个不同django模型的数据,允许用户操纵数据,然后将所有更改保存回数据库。从django模型创建JavaScript对象(类)

我可以通过序列化来自查询集的结果,将django模型'传递'为模板。例如,我有一个模型人:

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 }}; 

不过,我想能够在客户端创建一个“新”的人,因为如果该人是一个JavaScript类不是简单的JSON对象:

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

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

回答

0

你可以把一个字符串作为一个整体

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

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

var person2 = {{ person }} ; 
+0

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