【问题标题】:Storing JSON variable in django database在 Django 数据库中存储 JSON 变量
【发布时间】:2018-08-13 06:52:31
【问题描述】:

在我使用 Gridster 的应用程序中,我正在更改小部件位置,然后将其保存为 json 变量。我想将此 json 变量存储在 django 数据库中。 为此我不明白我应该如何在views.py中定义一个函数,在models.py中定义一个可以存储json变量的类

我的 HTML/JS 模板是

var URL = "{% url 'my_view_url' %}";

   $('.js-seralize-update').on('click', function () {

            var s = gridster.serialize();
            updated_grid=JSON.stringify(s);
            $('#log').val(updated_grid);

            function updategridster(){
            var data = updated_grid;
            $.post(URL, data, function(response){
            if(response === 'success'){ alert('Yay!'); }
            else{ alert('Error! :('); }
    });
}

        });

我的意见.py

def save_grid(request):
    if request.method == 'POST':

            # Some code to get json variable and store it to model
            return HttpResponse('success') # if everything is OK

我想在models.py中写一些与view.py对应的类,这样就可以保存JSON变量了

编辑1 我的 models.py 是

from django.db import models
from django.utils import timezone
from django.utils import simplejson as json

class update_grid(models.Model):
    data = JSONField(null=True, blank=True)

我只想将视图中的数据发送到此模型(如果正确)

编辑 2

我的JS脚本更新如下

  var URL = "{% url 'save-grid' %}";

     $('.js-seralize-update').on('click', function () {

                var s = gridster.serialize();
                updated_grid=JSON.stringify(s);
                $('#log').val(updated_grid);

                function updategridster(updated_grid){
                var data = updated_grid;
                $.post(URL, data, function(response){
                if(response === 'success'){ alert('Yay!'); }
                else{ alert('Error! :('); }
        });
    }
                 updategridster(updated_grid);          
            });

现在我得到这个错误

 POST http://localhost:8000/calendar_grid/save-grid net::ERR_CONNECTION_ABORTED  jquery.min.js:2

【问题讨论】:

    标签: json django django-models django-rest-framework


    【解决方案1】:

    如果你使用 PostgreSQL,你有内置的JSONField

    否则有几个实现,如django-jsonfield,对于管理员,我将它与django-jsoneditor配对

    然后您可以将 JSON 数据保存在单个字段中,在内置的情况下,您甚至可以对 JSON 结构中的特定键进行查询/过滤。

    【讨论】:

    • 那么应该如何对应views.py,以便变量可以存储在models.py中
    • 您是在问如何设置模式域?你使用model_instance.fieldname = value 然后model_instance.save()
    • 我的意思是我应该写什么来代替'# Some code to get json variable并将其存储到我的views.py中的模型中,以便将变量传递给models.py中的类
    • 我正在使用 sqllite 内置数据库
    • 不,您需要先制作或获取模型,然后设置其值。您的模型不应命名为 update_grid 而是 UpdateGrid,然后您可以使用 mymodel = UpdateGrid.objects.get(...) 获取它,然后运行 ​​mymodel.data = json_datamymodel.save()。这通常通过ModelForm 完成。这在 django 网站上的教程中有介绍,我建议你去看看。
    猜你喜欢
    • 2018-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-26
    • 2020-04-07
    • 1970-01-01
    • 2019-12-31
    • 1970-01-01
    相关资源
    最近更新 更多