I have used django rest api to create an api that looks like this -
{
"count": 2,
"next": null,
"previous": null,
"results": [
{
"url": "http://127.0.0.1:8000/app/student/1/",
"id": 1,
"title": "mr",
"name": "student1",
"address": "somewhere",
"city": "Mumbai",
"tests": [
{
"test_name": "Math",
"section_1": "34",
"section_2": "54",
"date_added": "2015-12-15"
}
]
},
{
"url": "http://127.0.0.1:8000/app/student/2/",
"id": 2,
"title": "mr",
"name": "student2",
"address": "somewhere",
"city": "Delhi",
"tests": [
{
"test_name": "English",
"section_1": "34",
"section_2": "65",
"date_added": "2015-12-15"
}
]
}
]
}
I have another app in the same project the uses this data using something like this -
def Peoplelist(request):
data= requests.get('http://127.0.0.1:8000/app/students/').json()
send_list = []
for i in range(2):
send_list.append(data['results'][i]['name'])
context = RequestContext(request, {
'send_list': send_list,
})
return render_to_response('taskmanager/numbers.html', context)
which creates a list of the student names.
I want to display a list of student names depending on the city name and then click on the names to view the student and test details. Can't figure out how to do that. Can someone suggest a way?Thanks.
models.py
class Test(models.Model):
date_added = models.DateField(default=datetime.datetime.now)
test_name = models.CharField(max_length=200,default='',blank=False)
section_1 = models.CharField(max_length=100,default='')
section_2 = models.CharField(max_length=100,default='')
def __str__(self):
return self.test_name
class Person(models.Model):
tests = models.ManyToManyField(Test)
title = models.CharField(max_length=3,default="mr",blank=False)
name = models.CharField(max_length=50,default='',blank=False)
address = models.CharField(max_length=200,default='',blank=False)
city = models.CharField(max_length=100,default='',blank=False)
def __str__(self):
return self.name
serializers.py
class TestSerializer(serializers.ModelSerializer):
class Meta:
model = Test
fields = ('test_name','section_1','section_2','date_added')
class PersonSerializer(serializers.HyperlinkedModelSerializer):
tests = TestSerializer(many=True, read_only=True)
class Meta:
model = Person
fields = ('id','title', 'name', 'address', 'city','tests')
numbers.html
{% extends "index.html" %}
{% block names %}
{% for list in send_list %}
<a href="/"><p>{{list}}</p></a>
{% endfor %}
{% endblock %}
******************************EDIT*************************
models.py
class City(models.Model):
city_name=models.CharField(max_length=100,default='',blank=False)
def __str__(self):
return self.city_name
class Person(models.Model):
tests = models.ManyToManyField(Test)
title = models.CharField(max_length=3,default="mr",blank=False)
name = models.CharField(max_length=50,default='',blank=False)
address = models.CharField(max_length=200,default='',blank=False)
city = models.CharField(max_length=100,default='',blank=False)
views.py
class StudentList(generics.ListCreateAPIView):
queryset = Person.objects.all()
serializer_class = PersonSerializer
class CityList(generics.ListCreateAPIView):
queryset = City.objects.all()
serializer_class = CitySerializer
class CityDetail(generics.ListCreateAPIView):
city = City.objects.all()
serializer_class = CitySerializer
class StudentDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = Student.objects.all()
serializer_class = StudentSerializer
numbers.htmltemplate? You said, you want to show student details on click. How you want that details? In separate page, pop up, or same page? Do you need ajax here? We need to see template file here for any help.