Guest User

Untitled

a guest
Oct 22nd, 2017
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.01 KB | None | 0 0
  1. --------------------------------------------------------------------------
  2.  
  3. models.py
  4.  
  5.  
  6. # -*- coding: utf-8 -*-
  7. from __future__ import unicode_literals
  8.  
  9. from django.db import models
  10.  
  11.  
  12. class Student(models.Model):
  13. fio_text = models.CharField(max_length=150, help_text="ФИО ученика", verbose_name="ФИО ученика")
  14.  
  15.  
  16. class Meta:
  17. verbose_name_plural = "Ученики"
  18.  
  19. # Для того чтобы в админке выводилось не Student object а нормальное имя ученика
  20. def __str__(self):
  21. return (self.fio_text)
  22.  
  23.  
  24.  
  25. class Teacher(models.Model):
  26. fio_text = models.CharField(max_length=150, help_text="ФИО преподавателя", verbose_name="ФИО преподавателя")
  27. students = models.ManyToManyField('Student', blank=True)
  28.  
  29. #Django не поддерживает вывод в админку в list_display полей ManyToManyField поэтому используем такой трюк
  30. def get_students(self):
  31. return ", ".join([p.fio_text for p in self.students.all()])
  32.  
  33. get_students.short_description = 'Студенты'
  34.  
  35.  
  36. class Meta:
  37. verbose_name_plural = "Преподаватели"
  38.  
  39. # Для того чтобы в админке выводилось не Teacher object а нормальное имя учителя
  40. def __str__(self):
  41. return (self.fio_text)
  42.  
  43.  
  44. ---------------------------------------------------
  45.  
  46. admin.py
  47.  
  48. # -*- coding: utf-8 -*-
  49. from __future__ import unicode_literals
  50.  
  51. from django.contrib import admin
  52.  
  53.  
  54. class StudentAdmin(admin.ModelAdmin):
  55. pass
  56.  
  57.  
  58. class TeacherAdmin(admin.ModelAdmin):
  59. #здесь показываем имя учителя и его учеников
  60. list_display = ('fio_text', 'get_students',)
  61. #а это для более удобного представления ManyToMany
  62. filter_horizontal = ('students',)
  63.  
  64.  
  65.  
  66. admin.site.register(Student, StudentAdmin)
  67. admin.site.register(Teacher, TeacherAdmin)
Add Comment
Please, Sign In to add comment