Я изучаю python, и я начал читать о структуре Django. В примерах, вот что я нашел:Являются ли объекты имен классов в python?
class Person(models.Model):
name = models.CharField(max_length=128)
def __str__(self): # __unicode__ on Python 2
return self.name
class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(Person, through='Membership')
def __str__(self): # __unicode__ on Python 2
return self.name
Не важно, что делает код. Мой вопрос о функции ManyToManyField(Person, through='Membership')
. Там мы передаем имя класса функции.
Почему это разрешено? Являются ли объекты класса NAMES в python?
Нет, вы не передаете имя класса функции. Вы передаете * фактический класс * в экземпляр другого класса. –
Если вам интересно, почему 'Person' передается как ссылка, а' Membership' передается как строка, это функция моделей Django, позволяющая ссылаться на класс 'Membership' с помощью строки до того, как класс определен , –
Соответствующая документация: https://docs.djangoproject.com/en/1.7/ref/models/fields/#foreignkey –