次に[例:Djangoの管理背景管理IPアドレスを使用する]は、バックグラウンド管理者(2)およびカスタム・テーブル・モデルを作成します
祭りは成功し、管理カスタムモデルに登録して、今私たちのニーズに応じて、関連するデータを表示するようにカスタマイズされています。
要件は次のとおりです。
1は、テーブルのフィールドが含まれます:いくつかの日を接続することができませんIPアドレス、IP使用、人のIDを使用し、ユーザー名の人々が使用し、窓、そして数日の不正使用を、
2、状態を使用してIPが唯一の2つのオプションがあります:無料、利用
3、内側から選択するようにユーザ名adminユーザーを使用して
4、クエリが数日間接続できない、IPアドレスのリストは、ip使用、ユーザー名の使用、窓、そして数日の不正使用を表示することができます
5、編集フォームを表示のみIPアドレス、IPの使用、人々は、ユーザー名を使用して、メモ情報
6、それはノート情報、ユーザ名を使用して、あいまいクエリのIPアドレスと一致するのが最善です
次のようにmodels.pyは改正しました:
django.db 輸入モデル から django.contrib インポート認証 #ここにあなたのモデルを作成します。 クラスipaddr_info(models.Model): IPADDR = models.CharField(max_lengthを= 20、verbose_name = " IP地址" ) ipstatus_choices = ( (0、" アイドル" )、 ( 1、" 使用中" )) ipstatus = models.SmallIntegerField(= verbose_name " IPステータス"、選択肢= ipstatus_choices) #ユーザーIDが一時的に使用されていない ユーザーID = models.IntegerField(デフォルト= 0、空白= Trueの場合、ヌル= 真) ユーザ名 = models.ForeignKey(' auth.User '、on_delete = models.SET_NULL、空白= Trueの場合、ヌル=真、verbose_name = " 使用人" ) コメント = models.TextField(max_lengthを= 256、空白= Trueの場合、ヌル=真、verbose_name = " 备注" ) disconnect_alarm_num = models.IntegerField(デフォルト= 0、verbose_name = " 接続アラームにできません(日)" ) connect_alarm_num = models.IntegerField(デフォルト= 0、verbose_name = " アラームの不正使用(日)" ) デフ __str__ (自己): 戻り値のu ' %sの%D%D%D '%(self.ipaddr、self.ipstatus、self.disconnect_alarm_num、self.connect_alarm_num)
注意:
の先端の1、verbose_nameカスタムフィールド名
図2に示すように、入力データが制限選択肢に使用することができ、また、必要に応じて名称データは、自己キーによってフロントエンドに表示画定することができます
図3に示すように、ブランク=書かれた真、AllowZeroLengthが、書き込みデータの処理は、=ので、ヌルを追加、ヌル値にTrueを書き込むことができます
4、外部キー、ユーザー名とユーザーテーブルとしてauth.User接続の人々を使用して(使用だけを書くことができた人のIPアドレスを、ユーザーがIPアドレスを大量に使用することができます)
私たちは、このプロパティを設定し表示しようとするので、図5に示すように、外部キーのために、デフォルトで対応するデータを削除するとき、削除カスケード削除することで、削除されます、あなたは外部キーを作成on_delete使用することです
1 CASCADE:これはデフォルトのオプションである、削除をカスケード接続するには、明示的に指定する必要はありません。 2 PROTECT:オプションは、時間を削除する場合は保護モード、ProtectedErrorエラーがスローされます。 。3 SET_NULL:削除されたとき、ブランキングモードは、外部キーフィールドがnullに設定されている= Trueの前提は、ブランク、ヌル=で、このフィールドがNULLであることを許されたときに、定義されている真。 4 外部キーが注プラスデフォルト値を定義されたデフォルト値に削除するとき、デフォルト値を設定し、外部キーフィールド:set_default。 。5 SET():コースのカスタム値は、対応する物理的です
同時に、ヌル= Trueに覚えて、ユーザーは、人が削除された場合ので、ユーザーはnullに設定され、対応するIPアドレスを削除するには削除する必要はありませんので、
フィールドが設定されていない場合、データのそれぞれを作成するためにデフォルトを設定6、デフォルト= 0、デフォルトのライト0
次のようにadmin.pyは改正します:
django.contribの輸入管理者 から mysiteapp.models インポートipaddr_info #ここにあなたのモデルを登録します。 クラスIpaddrAdmin(admin.ModelAdmin):
#リストの表示フィールド list_display =(' IPADDR '、' ipstatus '、' ユーザ名'、' コメント'、' disconnect_alarm_num '、' connect_alarm_num ' )
#搜索字段 search_fields =(' IPADDR '、' ユーザ名'、' コメント' )
#編集フィールド フィールド =(' IPADDR '、' ipstatus '、' ユーザ名'、' コメント' ) admin.site.register(IpaddrAdmin、ipaddr_info)
修正文書構造:
改訂されたデータは示しています。