2014-09-09 2 views
0

В Django 1.7 я не смог быстро найти простой однострочный шаблон, чтобы получить связанный класс модели из родительской модели.Django: получить связанный класс модели из родительского класса модели

Часто эти две модели находятся в разных файлах, а один уже импортирует другой, который ведет к круговым (то есть сломанным) импортам.

Вот простой пример:

# File: classroom_model.py 
from django.db import models 
class Classroom(models.Model): 
    class_code = models.IntegerField() 

# File: student_model.py 
from classroom_model import Classroom 
class Student(models.Model): 
    classroom = models.ForeignKey(Classroom, related_name="student_set") 

`` `

Здесь, желание может быть, чтобы получить доступ к классу Student модели в классе, например, написать @classmethod, что создает студенты (например, classroom.create_student (имя)

ответ

2

два способа:.

1) Простейшим способом является изменение ссылки в определении ForeignKey от прямой Модель ссылка на строку, например:

classroom = models.ForeignKey("Classroom") 

затем удалить импортную линию:

from classroom_model import Classroom 

2) Другой способ заключается в определении в classroom_model.py, что:

Student = Classroom.student_set.related.model``` 

Этот будет использоваться внутри метода, в котором он используется.

Смежные вопросы