Используя рефлексию с моделями Django, чтобы определить модуль, содержащий выбор? - PullRequest
0 голосов
/ 10 декабря 2018

Допустим, я беру следующий код из документации Django:

class Student(models.Model):
    FRESHMAN = 'FR'
    SOPHOMORE = 'SO'
    JUNIOR = 'JR'
    SENIOR = 'SR'
    YEAR_IN_SCHOOL_CHOICES = (
        (FRESHMAN, 'Freshman'),
        (SOPHOMORE, 'Sophomore'),
        (JUNIOR, 'Junior'),
        (SENIOR, 'Senior'),
    )
    year_in_school = models.CharField(
        max_length=2,
        choices=YEAR_IN_SCHOOL_CHOICES,
        default=FRESHMAN,
    )

Но вместо этого я хочу сделать:

from student_app import choices
class Student(models.Model):
    year_in_school = models.CharField(
        max_length=2,
        choices=choices.YEAR_IN_SCHOOL_CHOICES,
        default=choices.FRESHMAN,
    )

Есть ли в любом случае использование отражения, чтобы определить, какой модульварианты импортируются из?

Например:

field = Student._meta.fields.get_field_by_name('year_in_school')
choices_source = some_clever_function(field)
print("Choices imported from '%s'" % choices_source)

Я хочу, чтобы выходные данные были:

Варианты, импортированные из 'student_app'.

Очевидно, что умная функция не существует, но, надеюсь, проясняет, что я пытаюсь сделать.

Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...