Вопрос

В настоящее время я разрабатываю веб-приложение Django-Tastypie. У меня две модели Django:

class Student(models.Model):
  name = models.CharField()

class Course(models.Model):
  name = models.CharField()
  student = models.ForeignKey(Student)

И из этого у меня два ресурса Tastypie в двух разных файлах. Но вот моя проблема. Я хочу иметь возможность отфильтровать студента из курса и курса от студента:

from website.api.course import CourseResource

class StudentResource(ModelResource):
  course = fields.ForeignKey(CourseResource, "course")

  class Meta:
    queryset = Student.objects.all()
    resource_name = "student"
    filtering = { "course" : ALL }

а также

from website.api.student import StudentResource

class CourseResource(ModelResource):
  student = fields.ForeignKey(StudentResource, "student")

  class Meta:
    queryset = Course.objects.all()
    resource_name = "course"
    filtering = { "student" : ALL }

Но, конечно, я получил проблему с циркулярным импортом. Как я мог решить это?

Спасибо !

Это было полезно?

Решение

Вам не нужно импортировать другой ресурс в каждом модуле. Попробуйте вместо этого использовать строку в качестве аргумента.

class StudentResource(ModelResource):
    course = fields.ForeignKey('website.api.course.CourseResource', "course")

class CourseResource(ModelResource):
    student = fields.ForeignKey('website.api.student.StudentResource', "student")
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top