Models and databasesフィールド
5541 ワード
モデルは、データに関する単一の、最終的なデータソースです.格納されたデータの基本フィールドと動作が含まれます.通常、各モデルは単一のデータベース・テーブルにマッピングされます. modelごとに十数個がdjangoを継承する.db.models.ModelのPythonサブクラス 各モデルのプロパティは、データベース内のフィールド を表す. Django操作データベースのAPI Quick example
以上のPersonクラスは次のSQL文に相当します.
Fields(フィールド)フィールドを定義する際に、clean、save、deteleなどのDjangoのmodel APIのキーワード(メソッド、属性など)が競合しないでください.モデル内のフィールドタイプはすべてFieldクラスのインスタンスです(一般的にはCharFieldなどのFieldクラスのサブクラスが使用されます).Field typesを正しく選択すると、データに格納されているフィールドのタイプ(INTEGER、VARCHARなど)が決まります.
Field optionsフィールドオプション各フィールドには、CharFieldおよびそのサブクラスなどの特定のフィールドのパラメータのセットがあり、少なくとも1つのmax_を渡す必要があります.lengthのパラメータは、対応するデータベース内のvarcharの長さとして使用されます.各フィールドには、データベースの設定と密接に関連する一般的なオプションを設定できます.一般的な設定項目は次のとおりです. null Trueの場合、DjangoはこのフィールドにNULLを格納することを許可し、デフォルトはFalse である. blankこのフィールドが空白の内容を受け入れるかどうか、デフォルト値はFalse blankとnullの意味が異なり、blankは値に関連しており、blank=Trueがこのフィールドが空白の値を受け入れることができることを示す場合、Falseがこのフィールドを表す場合は を記入する必要があります. choicesが選択した方法このフィールドの候補値 が最も多い. default設定フィールドのデフォルト値 help_textフィールドのヘルプ情報 primary_keyデータテーブルのプライマリ・キーを設定し、デフォルトFalse uniqueサブフィールドが一意の値であるかどうかを設定する Automatic primary key fieldsデフォルトのDjangoモデルごとにデフォルト自動増分プライマリ・キーを設定
Verbose field names各filed type(ForeignKey,ManyToManyField and OneToOneFieldを除く)は、最初のパラメータでverbose nameのアクセス者が読める名前を設定し、Webページに表示することができます.verbose_name設定の場合.デフォルトはフィールド応答のプロパティ名です(下線はスペースで置き換えられます).
ForeignKey,ManyToManyField and OneToOneFieldなどverbose nameの設定はkeywordで設定する必要があります
from djiando.db import models
class Person(models.Model):
first_name = models.CharField(max_lenght=30)
last_name = models.CharField(max_length=30)
first_name last_name Person ,
以上のPersonクラスは次のSQL文に相当します.
CREATE TABLE myapp_person(
'id' serial NOT NULL PRIMARY KEY
'first_name' varchar(30) NOT NULL
'last_name' varchar(30) NOT NULL
)
Django ( ) myapp Django App App
( )
python manage.py makemigrations
python manage.py migrate
Fields(フィールド)フィールドを定義する際に、clean、save、deteleなどのDjangoのmodel APIのキーワード(メソッド、属性など)が競合しないでください.モデル内のフィールドタイプはすべてFieldクラスのインスタンスです(一般的にはCharFieldなどのFieldクラスのサブクラスが使用されます).Field typesを正しく選択すると、データに格納されているフィールドのタイプ(INTEGER、VARCHARなど)が決まります.
1、models.AutoField = int(11)
, id , , primary_key=True。
2、models.CharField
max_length
3、models.BooleanField =tinyint(1)
,Blank=True
4、models.ComaSeparatedIntegerField =varchar
CharField, max_lenght
5、models.DateField date
,auto_now = True ;auto_now_add , 。
6、models.DateTimeField datetime
DateField
7、models.Decimal = decimal
max_digits decimal_places
8、models.EmailField ( ) =varchar
9、models.FloatField = double
10、models.IntegerField
11、models.BigIntegerField
integer_field_ranges = {
'SmallIntegerField': (-32768, 32767),
'IntegerField': (-2147483648, 2147483647),
'BigIntegerField': (-9223372036854775808, 9223372036854775807),
'PositiveSmallIntegerField': (0, 32767),
'PositiveIntegerField': (0, 2147483647),
}
12、models.IPAddressField (ip4 )
13、models.GenericIPAddressField (ip4 ip6 )
protocol :both、ipv4、ipv6
,
14、models.NullBooleanField
15、models.PositiveIntegerFiel Integer
16、models.PositiveSmallIntegerField smallInteger
17、models.SlugField 、 、 、
18、models.SmallIntegerField
:tinyint、smallint、int、bigint
19、models.TextField =longtext
20、models.TimeField HH:MM[:ss[.uuuuuu]]
21、models.URLField ,
22、models.BinaryField
23、models.ImageField
24、models.FilePathField
Field optionsフィールドオプション各フィールドには、CharFieldおよびそのサブクラスなどの特定のフィールドのパラメータのセットがあり、少なくとも1つのmax_を渡す必要があります.lengthのパラメータは、対応するデータベース内のvarcharの長さとして使用されます.各フィールドには、データベースの設定と密接に関連する一般的なオプションを設定できます.一般的な設定項目は次のとおりです.
YEAR_IN_SCHOOL_CHOICES=(
('FR','Freshman'),
('SO','Sophomore'),
('JR','Junior'),
('SR','Senior'),
('GR','Graduate'),
)
from django.db import models
class Person(models.Model):
SHIRT_SIZES=(
('S','Small'),
('M','Medium'),
('L','Large'),
)
name = models.CharField(max_length=60)
shirt_size = models.CharField(max_lenth=1,choices= SHIRT_SIZES)
>>>p = Person(name='Fred',shirt_size='L')
>>>p.save()
>>>p.shirt_size
'L'
>>>p.get_shirt_size_display()
'Large'
from django.db import models
class Fruit(models.Model):
name = models.CharField(max_length=100,primary_key=True)
>>>f = Fruit.objects.create(name='Apple')
>>>f.name = 'Pear'
>>>f.save()
>>>f.objects.values_list('name',flat=True)
>>>['Apple','Pear']
flat=True 。
id = models.AutoField(primary_key=True)
Verbose field names各filed type(ForeignKey,ManyToManyField and OneToOneFieldを除く)は、最初のパラメータでverbose nameのアクセス者が読める名前を設定し、Webページに表示することができます.verbose_name設定の場合.デフォルトはフィールド応答のプロパティ名です(下線はスペースで置き換えられます).
first_name = models.CharField("person's first name",max_length=30)
>>> verbose_name person's first name
first_name = models.CharField(max_length=30)
>>>verbose_name first name
ForeignKey,ManyToManyField and OneToOneFieldなどverbose nameの設定はkeywordで設定する必要があります
poll = models.ForeignKey(Poll,on_delete=models.CASCADE,verbose_name='the related poll',)
auto_now auto_now_add ( )
auto_now --- ,
auto_now_add ---
db_column
db_index = True
editable=True Admin
error_messages=None
auto_created=False
validators=[]
upload-to