我在我的一个项目中使用过Django。我也使用了angularjs。提到我在Django和Angularjs中很新。现在我的观点之一是我从我的模型之一检索数据,即 SubscribePlan 。
def subscribed(request):
from django.core import serializers
subscribedplan = SubscribePlan.objects.filter(user = request.user)
subscribing = serializers.serialize('json',subscribedplan)
return HttpResponse(subscribing)
并且 SubscribePlan 的models.py是
class SubscribePlan(models.Model):
plan = models.ForeignKey(Plan)
expiriary_date = models.DateTimeField()
user = models.ForeignKey(User)
在这里你可以看到计划是一个外键。现在我使用模板中的anuglarjs来获取数据以显示的名称使用上面给出的视图订阅 .i的关联用户的计划。在此tempalate中使用了angularjs,就像这样..
{% extends 'userena/base_userena.html' %}
{% load i18n %}
{% load url from future %}
{% block title %}{% blocktrans with profile.user.username as username %}{{ username }}'s profile.{% endblocktrans %}{% endblock %}
{% block content_title %}<h2>{{ profile.user.username }} {% if profile.user.get_full_name %} ({{ profile.user.get_full_name }}){% endif %}</h2>{% endblock %}
{% block content %}
<div class="panel-body">
<h4 ng-controller='SubscribedPlanCtrl'>Subscribe Plan: <span style = "color:red">{[{subscribedplan.0.plan}]}</span></h4>
</div>
{%block extrajs%}
<script type="text/javascript">
var app = angular.module('shutter',[]);
app.config(function($httpProvider){
//$httpProvider.defaults.headers.post['X-CSRFToken'] = {% csrf_token %};
$httpProvider.defaults.xsrfCookieName = 'csrftoken';
$httpProvider.defaults.xsrfHeaderName = 'X-CSRFToken';
});
app.config(function($interpolateProvider) {
$interpolateProvider.startSymbol('{[{');
$interpolateProvider.endSymbol('}]}');
});
app.controller('SubscribedPlanCtrl',['$scope','$http',function($scope,$http){
$http.get('/showphoto/subscribing/').success(function(subdata){
$scope.subscribedplan = subdata;
}).error(function(subdata,status){
$scope.datas = subdata || "Request Fail";
$scope.status = status;
console.log(status);
});
}]);
</script>
{%endblock%}
{% endblock %}
在模板中,您可以看到我使用 {[{subscribedplan.0.plan}]} 来显示计划的名称。
但问题是,不是显示计划的名称,而是显示计划的 ID 。请注意< strong>计划是外键。现在我如何显示计划的名称。
答案 0 :(得分:1)
您可以使用Django的natural keys或自己构建JSON对象。后者很好,在这种情况下,因为它是一个小模型,你不需要反序列化它。示例代码(未经测试):
from json import json
def subscribed(request):
subscribedplan = SubscribePlan.objects.filter(user=request.user)[0]
json_obj = [{"plan": subscribedplan.plan.name }, ]
return HttpResponse(json.dumps(json_obj))
会推荐更完整的软件包,例如django-angular,以便更好地集成。