Почему переменные класса используются для моделей Django? - PullRequest
0 голосов
/ 19 октября 2011

Прежде всего, я должен заявить, что я совсем новичок в Джанго.

Я в порядке с созданием подобных моделей:

from django.db import models

class Person(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)

Однако я не понимаю, как работают модели django под прикрытием. То, что я сделал, указало две переменные класса, когда я говорю

person = Person();
person.first_name = 'abc'

Является ли first_name, которое я использовал в этом коде, таким же, как first_name, которое я использовал в предыдущем коде? Если да, first_name должно быть models.CharField, но я передаю ему строку, почему она все еще работает?

Ответы [ 2 ]

2 голосов
/ 19 октября 2011

В первом примере вы определяете класс и его атрибуты класса.

Во втором примере вы создаете экземпляр этого класса с person = Person() (отбросьте ;, в этом нет необходимости).

Затем установщик для model.CharField принимает строку, хотя она все еще имеет тип CharField.

2 голосов
/ 19 октября 2011

Не парень из джанго, но это кажется довольно стандартным ... Я не уверен, полностью ли я понял ваш вопрос.

last_name = models.CharField(max_length=30)

Объявляет поле, в которое вы вводите данные. Похоже, вы создаете строку в базе данных "models".

person.first_name = 'abc'

Просто заполняет поле first_name для экземпляра Person, который вы создали. Надеюсь, это поможет.

...