Форум сайта python.su
0
Всем привет. Помогите пожалуйста разобраться в следующем:
Имеются две модели для Студентов и Групп:
class Groups(models.Model):
namegr = models.CharField(max_length=25)
starosta = models.ForeignKey('Students',blank=True, null=True,related_name='Staros')
def __unicode__(self):
return '%s' % self.namegr
class Students(models.Model):
fio = models.CharField(max_length=50)
bdate = models.DateField()
tickno = models.CharField(max_length=10)
group = models.ForeignKey(Groups,blank=True, null=True,related_name='gruppa')
def __unicode__(self):
return self.fio
def grups(request):
grall = Groups.objects.all()
html = "<html><table border=""1""><th>Группа</th><th>Количество человек</th><th>Староста</th>"
for i in grall:
kol = len(Students.objects.filter(group=i))
html += "<tr><td><a href=""/#Здесь думаю надо разместить линк на view/> %s </a></td><td> %s </td><td> %s </td></tr>" % (i, kol, i.starosta)
html += "</table></html>"
return HttpResponse(html)
Офлайн
9
По коду:
лучше не формировать html во view, а сделать шаблон.
Насчет строчки:
kol = len(Students.objects.filter(group=i))
kol = Students.objects.filter(group=i).count()
Отредактировано (Янв. 14, 2012 16:50:24)
Офлайн
0
svasСпасибо за совет, но мне как раз нужно именно во view.
По коду:
лучше не формировать html во view, а сделать шаблон.
svasПримерно так я и представил себе это, но вот как такое реализовать? Не могли бы вы написать небольшой пример? А то у меня такое получается, что стыдно показывать даже;)
По вопросу: сделайте еще одно view где параметром будет id группы. И в таблице ссылку на это view с соответствующим id.
Офлайн
9
def group_detail(request, group_id):
group = get_object_or_404(Group, pk=group_id):
students = group.students_set.all()
#далее фомируете список студентов
...
group/(?P<group_id>\d+)/$
...
Офлайн
0
Спасибо, вы мне очень помогли!
Офлайн
0
Опять мне нужна помощь специалистов:
Проблему я конечно решил, но вот чувствую, что не так как нужно. По совету Svas я создал вьюху для отображения студентов -
def viewGr(request):
if request.GET['id'] and 'id' in request.GET:
q = request.GET['id'].encode('utf-8')
gr = get_object_or_404(Groups, pk=q)
grst = Students.objects.filter(group=gr)
html = "<html><body>\n<table border=""1"">\n<th>Студенты группы <a href=""#"">%s</a></th><th>Студбилет №</th>\n" % gr.namegr.encode('utf-8')
for i in grst:
html += "<tr><td><a href=""/student/"">%s</a></td><td>%s</td></tr>\n" % (i, i.tickno.encode('utf-8'))
html += "</table>\n</body></html>"
return HttpResponse(html)
def grups(request):
grall = Groups.objects.all()
html = "<html>\n<table border=""1"">\n<th>Группа</th><th>Количество человек</th><th>Староста</th>"
for g in grall:
kol = Students.objects.filter(group=g).count()
html += "<tr><td><a href=""/grupctn/?id=%s> %s </a></td><td> %s </td><td> %s </td></tr>\n" % (g.id, g, kol, g.starosta)
html += "\n</table></html>"
return HttpResponse(html)
...
url(r'^grupctn/', viewGr),
...
Офлайн
568
from django.db.models import Count
Organizations.objects.values('type').annotate(dcount=Count('type'))
>>>[{'type': 1, 'dcount': 2}, {'type': 2, 'dcount': 1}]
Офлайн
0
FishHookПрошу прощения…. а что это? И как оно мне может быть полезно, я не понял.from django.db.models import Count
Organizations.objects.values('type').annotate(dcount=Count('type'))
>>>[{'type': 1, 'dcount': 2}, {'type': 2, 'dcount': 1}]
Офлайн
9
Я бы передовал id группы не как GET параметр, а в урл. Но это я думаю кому как нравится.
В строке
if request.GET['id'] and 'id' in request.GET:
if 'id' in request.GET and request.GET['id']:
Прошу прощения…. а что это? И как оно мне может быть полезно, я не понял.Это наверное про то, что при получении списка групп можно сразу же одним запросом получить количество студентов в группе
Офлайн
0
Спасибо всем за помощь. Svas, вам отдельное спасибо за то, что разжевали)
Офлайн