だから私はこのようにDjangoのモデルを作成することができます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
すべての作品、それは必要がありますが、私はそれがどのように動作するかを理解したいと思いますよう。ライン上の非DjangoのPythonコードで
title = models.TextField(max_length=200)
はタイプmodels.TextFieldのクラス変数タイトルを定義し、私はこのようにもそれにアクセスすることができます:私は何かのインスタンスを作成するときにthing.__class__.title
(link)
しかし、ジャンゴに私は突然、テキストを取得/設定できるタイトル属性を持っています。そして、thing.__class__.title
でそれにアクセスできません。明らかにthing.titleを実行するとき、私はクラス変数 "title"にアクセスしていませんが、属性/プロパティを生成していますか?
私はフィールドがthing._meta.fieldsに終わったことを知っていますが、どうですか? 何が起こっているの?
1、Djangoはバックグラウンドでプロパティ "title"を作成しますか?
2、変数 "title"はどうなりましたか?
おかげでフィールドを移動します。 djangoproject.com!私はdocs.djangoproject.comで説明を探していただけです – Michal
メタクラスは属性やメソッドなどを追加できますが、CharField型のクラス変数titleが明確に削除されているので属性/メソッドなども削除できますか?それとも? – Michal
@Michal確かに、すべてのpython属性は '__dict__'に格納されています。その '__dict__'を操作することによって、あなたは何でもできるのです。 –