Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --------------------------------------------------------------------------
- models.py
- # -*- coding: utf-8 -*-
- from __future__ import unicode_literals
- from django.db import models
- class Student(models.Model):
- fio_text = models.CharField(max_length=150, help_text="ФИО ученика", verbose_name="ФИО ученика")
- class Meta:
- verbose_name_plural = "Ученики"
- # Для того чтобы в админке выводилось не Student object а нормальное имя ученика
- def __str__(self):
- return (self.fio_text)
- class Teacher(models.Model):
- fio_text = models.CharField(max_length=150, help_text="ФИО преподавателя", verbose_name="ФИО преподавателя")
- students = models.ManyToManyField('Student', blank=True)
- #Django не поддерживает вывод в админку в list_display полей ManyToManyField поэтому используем такой трюк
- def get_students(self):
- return ", ".join([p.fio_text for p in self.students.all()])
- get_students.short_description = 'Студенты'
- class Meta:
- verbose_name_plural = "Преподаватели"
- # Для того чтобы в админке выводилось не Teacher object а нормальное имя учителя
- def __str__(self):
- return (self.fio_text)
- ---------------------------------------------------
- admin.py
- # -*- coding: utf-8 -*-
- from __future__ import unicode_literals
- from django.contrib import admin
- class StudentAdmin(admin.ModelAdmin):
- pass
- class TeacherAdmin(admin.ModelAdmin):
- #здесь показываем имя учителя и его учеников
- list_display = ('fio_text', 'get_students',)
- #а это для более удобного представления ManyToMany
- filter_horizontal = ('students',)
- admin.site.register(Student, StudentAdmin)
- admin.site.register(Teacher, TeacherAdmin)
Add Comment
Please, Sign In to add comment