Django-モデル

3095 ワード

MVCフレームワークモデルに基づく.views.controller
M(moedels)T(template)V(views)
データベースの構成:
サポート:PostgreSQL、MYSQL、ORACLE、SQLite.
setting.pyファイルでの構成:''
  DATABASE_ENGINE='データベースエンジン
  DATABASE_NAME='データベース名
  DATABASE_USER=''ユーザー名
  DATABASE_PASWORD='パスワード
  DATABASE_HOST='ホスト
よくあるエラー
エラーメッセージ
解決策
You haven’t set the DATABASE_ENGINE setting yet.
空の文字列で``DATABASE_を構成しないでくださいENGINE``の値です.表5-1は、使用可能な値を示します.
Environment variable DJANGO_SETTINGS_MODULE is undefined.
``python manager.の使用py shell``コマンドはインタラクティブ解釈器を起動し、``python``コマンドで直接インタラクティブ解釈器を起動しないでください.
Error loading _____ module: No module named _____.
適切なデータベースアダプタ(psycopgやMySQLdbなど)がインストールされていません.Djangoはアダプタを持っていないので、自分でダウンロードしてインストールしなければなりません.
_____ isn’t an available database backend.
DATABASE_をENGINEは、前述した合法的なデータベースエンジンに構成されています.スペルミスかも?
database _____ does not exist
設定``DATABASE_NAME``は、存在するデータベースを指すか、データベースクライアントで適切な``CREATE DATABASE``文を実行してデータベースを作成します.
role _____ does not exist
設定``DATABASE_USER``は、存在するユーザを指すか、データベースクライアントでユーザを作成します.
could not connect to server
DATABASE_の表示HOSTとDATABASE_PORTが正しく構成されているか、データベース・サーバが正常に動作しているかを確認します.
最初のプログラムの作成
models.py
from django.db import models          
class Publisher(models.Model):        #Publisher:   
    name = models.CharField(max_length = 10)
    address = models.CharField(max_length = 50)
    city = models.CharField(max_length = 20)
    state_province = models.CharField(max_length=30)
    country = models.CharField(max_length=50)
    website = models.URLField()
    
    foreign = models.ForeignkeyField(max_length = 20) #    
    data = models.DataField(max_length = 20)          #    TimeFileld、DateTimeField
    flt = models.FloatField(max_length = 20)          #    IntegerField、DecimalField

表名=app名+小文字クラス名(_をスペースに置き換えます)
python manage.py validate(有効性の検証)
python manage.py syncdb(データテーブルの作成)
python manage.py sqlall app名(テーブル作成SQL文を表示)
各モデルに__を加えるunicode__()メソッド
    def __unicode__():
            return u'%s %s' % (self.name,self.city)
更新データの挿入
p = Publisher(name = 'jay', city = 'CHINA', country='bj')
p.save()
p = Publisher.objects.getname(name='joy')
p.name = 'jjj'
p.save()
データの問合せ
Publisher.objects.all()#はselect*がすべてのデータを取り出すことに相当します
Publisher.objects.filter(name='joy')#はwhere name="joy"に相当する
Publisher.objects.filter(name__container='joy')#はname like'%joy%'に相当する
Publisher.objects.get(name='joy')#は、単一のオブジェクトを取得します.リスト全体ではなく
Publisher.objects.filter.order_by(name='joy')
Publisher.objects.order_by('name')[0]#制限戻りデータ[0:2]
データのソート
Publisher.objects.order_by(「name」)は、カンマで区切られた複数のパラメータであってもよい
Publisher.objects.order_by(-name)#逆ソート
Publisherクラスに追加
    class Meta:
ording=['name']デフォルトソート
 
削除
p.delete()
Publiser.objects.all().delete()