Задать вопрос

Django 2. Как мне обратиться к модели с помощью связи с другими моделями в шаблоне?

Есть 3 модели:
class User(AbstractUser):
    is_student = models.BooleanField('student status', default=False)
    is_teacher = models.BooleanField('teacher status', default=False)
    father_name = models.CharField(max_length = 30, db_index = True,null = True)
    photo = models.ImageField(db_index = True,null = True,blank = True)
    avatarka = models.ImageField(db_index = True,null = True,blank = True)
    date_of_birth = models.DateField(auto_now=False, auto_now_add=False,null = True,blank = True)
    number = PhoneNumberField(null = True,blank = True)

    class Meta:
    	db_table = 'usertest'


class Student(models.Model):
	user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True,related_name = 'student')
	class Meta:
		db_table = 'students'

class School_Class(models.Model):
	number = models.IntegerField(db_index = True,unique = True)
	student = models.ForeignKey(Student,related_name = 'school_class',null = True,
			on_delete = models.SET_NULL)
	
	class Meta:
		db_table = 'school_class'

	def __str__(self):
		return str(self.number)

Как мне в шаблоне обратиться в модели School_Class при условии что в шаблоне будет передано значение лишь модели User, то есть модели пользователя ( к ней можно обратиться в шаблоне, даже если она не передана с помощью context ). Я пробовал что-то на подобие:
<h3>{{ user.student.school_class.number }}</h3>
Но в результате такого обращение я получаю ровно нечего. Нет ни ошибки, не текста с значением ячейки.
  • Вопрос задан
  • 718 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
alternativshik
@alternativshik
user.student.school_class.number не вызвать. Можно использовать queryset user.student.school_class.all
А можно сделать у модели метод или свойство с нужными в шаблонах данными и не издеваться над тем, кто будет читать код через полгода-год.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы