3

I am trying to get the django model object to show on a html page. Of course when I tried to use {{ object }}, I get an error.

How do I properly get the django data model and manipulate the attributes using javascript?

the url:

('^all_companies$', 'companies.views.all_companies')

the view:

def all_companies(request): 
    companies = Company.objects.all().order_by('id')[:5];   
    return direct_to_template(request, 'all_companies.html', {'companies': companies} );

the html:

{% block sidebar %}
    <div id="sidebar">
        <!-- like google maps, short list of company info -->
        <ul>
            {% for comp in companies %}
                <li>{{ comp }}</li>                 
            {% endfor %}
        </ul>
    </div>
{% endblock %}

the js:

var tmp = {{ companies }}

2 Answers 2

11

In your view:

from django.core import serializers
json_serializer = serializers.get_serializer("json")()
companies = json_serializer.serialize(Company.objects.all().order_by('id')[:5], ensure_ascii=False)

In template:

var companies = '{{ companies|escapejs }}';

This is only for getting your data models into JS. For manipulating them, you should create some views that will get called from JS (by AJAX). They should probably return JSON. Check out https://dev.to/brian101co/how-to-return-a-json-response-in-django-gen or https://simpleisbetterthancomplex.com/tutorial/2016/07/27/how-to-return-json-encoded-response.html on how to simply return only JSON from a view.

Sign up to request clarification or add additional context in comments.

Comments

1

You must serialize your companies model data to json, so javascript will be able to read it.

So you'll need to have two model variables, companies (the one you have right now) and companies_json which will hold the serialized data.

from django.core import serializers
companies_json = serializers.serialize("json", Company.objects.all())

I haven't tested this.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.