请多多包涵.我刚刚学习
django-rest-framework.而且我似乎无法抓住它.
模型:
class Day(models.Model): date = models.DateField(default=date.today) class ToDo(models.Model): date = models.ForeignKey(Day) name = models.CharField(max_length=100) very_important = models.BooleanField(default=False) finished = models.BooleanField(default=False)
正常观点:
def home(request): days = Day.objects.all() return render(request,'test.html',{ 'days':days })
创建了一个serializers.py文件:
class DaySerializer(serializers.ModelSerializer): class Meta: model = Day field = ('id','date') class ToDoSerializer(serializers.ModelSerializer): date = DaySerializer() class Meta: model = ToDo field = ('id','date','name','very_important','finished')
在此之后,我迷失了.假设我转到url(‘^ api / $’),如何获取Day及其相关对象的json对象?
基本上这就是我想要显示的方式:
现在我如何使用django-rest-framework看起来像模板中的上述内容.
更新
我想做这样的事情:
>通过转到URL获取json对象(例如:/api/.json)
[ { "id": 1,"date": "2015-06-23","day_todo_set": [ { "id":5 "name": "Bloom","very_important": True,"finished": False },{ "id":4 "name": "REST","finished": True } ] },{ "id": 2,"date": "2015-06-22","day_todo_set": [ { "id":3 "name": "Alarm 1","finished": True },{ "id":2 "name": "Meet up with SIS",{ "id":1 "name": "Buy Milk","finished": False } ] } ]
>操纵对象
JS:
$(function () { var $days = $('#days') $.ajax({ type: 'GET',url: '/api/.json',success: function(days) { $.each(days,function(i,day) { $days.append('<li>date: '+ day.date+ '</li>') }); } }); })
解决方法
model.py:
class Day(models.Model): date = models.DateField(default=date.today) def get_todo_list(self): return self.day_todo_set.order_by('-id')[:5] class ToDo(models.Model): date = models.ForeignKey(Day,related_name="day_todo_set") name = models.CharField(max_length=100) very_important = models.BooleanField(default=False) finished = models.BooleanField(default=False)
在serializers.py中
class ToDoSerializer(serializers.ModelSerializer): class Meta: model = ToDo field = ('id','finished') class DaySerializer(serializers.ModelSerializer): day_todo_set = ToDoSerializer(many=True,source="get_todo_list") class Meta: model = Day field = ('id','day_todo_set')
使用序列化程序编写django视图.
@csrf_exempt def day_list(request): """ List all code snippets,or create a new snippet. """ if request.method == 'GET': snippets = Day.objects.order_by('-date')[:10] serializer = DaySerializer(snippets,many=True) return JSONResponse(serializer.data)
在你的urls.py中
url(r'^api/$',views.day_list,name='days_list')