Итак, я могу создать модель Django следующим образом:
from django.db import models
class Something(models.Model):
title = models.TextField(max_length=200)
и я могу работать с ним следующим образом:
thing = Something()
#set title
thing.title = "First thing"
#get title
thing.title
Все работает так, как должно, но я хотел бы понять, КАК это работает.
title = models.TextField(max_length=200)
в коде, отличном от Django Python выше, задается заголовок переменной типа type models.TextField, и я мог бы получить к нему доступ также следующим образом: thing.__class__.title
(ссылка)
Но в Django, когда я создаю экземпляр Something, у меня внезапно появился атрибут title, где я могу получить/установить текст. И не могу получить к нему доступ с помощью thing.__class__.title
Так ясно, когда я делаю thing.title. Я не получаю доступ к переменной класса "title" , но некоторые сгенерированные атрибуты/свойства или?
Я знаю, что поля оказались в thing._meta.fields, но как? Что происходит и как?
1, Django создает свойство "title" за кулисами?
2, Что случилось с переменной класса "title" ?