InlineModelAdmin
class InlineModelAdmin
class TabularInline
class StackedInline
たとえば、2 つのモデルがあります:
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=100) )
class Book(models.Model):
author = models.ForeignKey(Author)
title = models.CharField(max_length=100)
著者ページでブックを編集したい場合:
django から。 contrib import admin
class BookInline(admin.TabularInline):
model = Book
class AuthorAdmin(admin.ModelAdmin):
inlines = [
, BookInline,
]
Django は InlineModelAdmin の 2 つのサブクラスを提供します:
TabularInline
StackedInline
違いは、使用されるテンプレートです。
InlineModelAdmin オプション
InlineModelAdmin と ModelAdmin に共通のオプションは次のとおりです:
form
fieldsets
fields
formfield_overrides
exclude
filter_horizontal
filter_vertical
ordering
PRepopulated_fields
get_queryset( )
radio_fields
readonly_fields
raw_id_fields
formfield_for_choice_field()
formfield_for_foreignkey ()
formfield_for_manytomany()
has_add_permission()
has_change_permission()
has_delete_permission()
追加のオプションは次のとおりです:
InlineModelAdmin.model
インラインで使用されるモデル (必須)。
InlineModelAdmin.fk_name
複数の外部キーがある場合に使用されるモデルの名前。
InlineModelAdmin.formset
デフォルトのBaseInlineFormSet。
InlineModelAdmin.form
デフォルトのモデルフォーム。フォームセットの作成時に inlineformset_factory() に渡されます。
InlineModelAdmin.extra
インラインの追加数。
InlineModelAdmin.get_extra() はインラインの追加数も返します。
InlineModelAdmin.max_num
表示できる最大数。
InlineModelAdmin.get_max_num() もこの数値を返します。
InlineModelAdmin.min_num
表示できる最小数。
InlineModelAdmin.get_min_num() もこの数値を返します。
InlineModelAdmin.raw_id_fields
ModelAdmin と同じ。
class BookInline(admin.TabularInline):
model = Book
raw_id_fields = ("pages",)
InlineModelAdmin.template
使用されるテンプレート。
InlineModelAdmin.verbose_name
はメタクラスのverbose_nameをオーバーライドします。
InlineModelAdmin.verbose_name_plural
上記と同じ
InlineModelAdmin.can_delete
デフォルトはTrueです。
InlineModelAdmin.get_formset(request, obj=None, **kwargs)
ModelAdmin.get_formsets_with_inlines.を参照
InlineModelAdmin.get_extra(request, obj=None, **kwargs)
class BinaryTreeAdmin(admin.TabularInline):
model = BinaryTree
def get_extra(self, request, obj=None, **kwargs):
extra = 2
if obj:
return extra - obj.binarytree_set.count()
return extra
InlineModelAdmin.get_max_num( request , obj=None, **kwargs)
class BinaryTreeAdmin(admin.TabularInline):
model = BinaryTree
def get_max_num(self, request, obj=None, **kwargs):
max_num = 10
if obj 。親:
を通じてoff ' ' ' ' ' ' ' スルー スルー スルー スルー ‐ ‐ ‐ ‐‐‐‐‐ ‐ 5
‐ ‐ ‐ ‐ ‐ return max_num
InlineModelAdmin。 get_min_num(request, obj=None, **kwargs)
上記を参照してください。
同じModelに複数のForeignKeyがリンクされている場合
複数の外部キーがある場合:
django.dbからモデルをインポート
class Friendship(models.Model):
to_person = models.ForeignKey(person, relationship_name= "friends")
from_person = models.ForeignKey(person, relationship_name="from_friends")
そのうちの 1 つを表示します:
from django.contrib import admin
from myapp.models import Friendship
class FriendshipInline(admin.TabularInline) ) :
model = Friendship
fk_name = "to_person"
class PersonAdmin(admin.ModelAdmin):
inlines = [
FriendshipInline,
]
多対多モデルの操作
モデルの例 :
from django .db import models
class person(models.Model):
name = models.CharField(max_length=128)
class Group(models.Model):
name = models.CharField(max_length=128)
members =モデル .ManyToManyField(person, relationship_name='groups')
インライン表示:
django.contrib から import admin
class MembershipInline(admin.TabularInline):
モデル = Group.members.through
class PersonAdmin(admin.ModelAdmin):
inlines = [
MembershipInline,
]
class GroupAdmin(admin .ModelAdmin):
inlines = [
MembershipInline,
]
exclude = ('members',)
注:
まず、MembershipInline クラスは、Group.members.through の管理を指します。多対多のリレーショナル データベース
次に、GroupAdmin はメンバー フィールドを除外する必要があります
多対多の中間モデルの使用
中間モデルの例を明示的に指定します:
from django.db import models
。
クラス Person(models.Model):
name = models.CharField(max_length=128)
class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(Person, through='Membership')
class Membership(models.Model):
person = models.ForeignKey(person)
group = models.ForeignKey(Group)
date_joined = models.DateField()
Invitation_reason = models.CharField(max_length =64)
最初のステップ:
class MembershipInline(admin.TabularInline):
モデル = Membership
extra = 1
2 番目のステップ:
class PersonAdmin(admin.ModelAdmin):
inlines = (MembershipInline ,)
class GroupAdmin(admin.ModelAdmin):
inlines = (MembershipInline,)
ステップ 3:
admin.site.register(person, PersonAdmin)
admin.site.register(Group, GroupAdmin)
使用インラインとしての一般的な関係
一般的に関連するオブジェクトのインライン 例:
from django.db import models
from django.contrib.contenttypes.fields import GenericForeignKey
class Image(models.Model):
image = models.ImageField (upload_to="images")
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey("content_type", "object_id")
class Product(models.Model):
name = models.CharField(max_length=100)
製品の追加/変更ページで Image インスタンスを編集したい場合は、GenericTabularInline または GenericStackedInline を使用できます:
from django.contrib import admin
from django.contrib.contenttypes。 admin import GenericTabularInline
from myproject.myapp.models import Image, Product
class ImageInline(GenericTabularInline):
model = Image
class ProductAdmin(admin.ModelAdmin):
inlines = [
ImageInline,
]
admin. site .register(Product, ProductAdmin)
上記は Djangoadminsite (3) InlineModelAdmin の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。

Pythonは学習と使用が簡単ですが、Cはより強力ですが複雑です。 1。Python構文は簡潔で初心者に適しています。動的なタイピングと自動メモリ管理により、使いやすくなりますが、ランタイムエラーを引き起こす可能性があります。 2.Cは、高性能アプリケーションに適した低レベルの制御と高度な機能を提供しますが、学習しきい値が高く、手動メモリとタイプの安全管理が必要です。

PythonとCは、メモリ管理と制御に大きな違いがあります。 1。Pythonは、参照カウントとガベージコレクションに基づいて自動メモリ管理を使用し、プログラマーの作業を簡素化します。 2.Cには、メモリの手動管理が必要であり、より多くの制御を提供しますが、複雑さとエラーのリスクが増加します。どの言語を選択するかは、プロジェクトの要件とチームテクノロジースタックに基づいている必要があります。

科学コンピューティングにおけるPythonのアプリケーションには、データ分析、機械学習、数値シミュレーション、視覚化が含まれます。 1.numpyは、効率的な多次元配列と数学的関数を提供します。 2。ScipyはNumpy機能を拡張し、最適化と線形代数ツールを提供します。 3. Pandasは、データ処理と分析に使用されます。 4.matplotlibは、さまざまなグラフと視覚的な結果を生成するために使用されます。

PythonまたはCを選択するかどうかは、プロジェクトの要件に依存するかどうかは次のとおりです。1)Pythonは、簡潔な構文とリッチライブラリのため、迅速な発展、データサイエンス、スクリプトに適しています。 2)Cは、コンピレーションと手動メモリ管理のため、システムプログラミングやゲーム開発など、高性能および基礎となる制御を必要とするシナリオに適しています。

Pythonは、データサイエンスと機械学習で広く使用されており、主にそのシンプルさと強力なライブラリエコシステムに依存しています。 1)Pandasはデータ処理と分析に使用され、2)Numpyが効率的な数値計算を提供し、3)SCIKIT-LEARNは機械学習モデルの構築と最適化に使用されます。これらのライブラリは、Pythonをデータサイエンスと機械学習に理想的なツールにします。

Pythonを1日2時間学ぶだけで十分ですか?それはあなたの目標と学習方法に依存します。 1)明確な学習計画を策定し、2)適切な学習リソースと方法を選択します。3)実践的な実践とレビューとレビューと統合を練習および統合し、統合すると、この期間中にPythonの基本的な知識と高度な機能を徐々に習得できます。

Web開発におけるPythonの主要なアプリケーションには、DjangoおよびFlaskフレームワークの使用、API開発、データ分析と視覚化、機械学習とAI、およびパフォーマンスの最適化が含まれます。 1。DjangoandFlask Framework:Djangoは、複雑な用途の迅速な発展に適しており、Flaskは小規模または高度にカスタマイズされたプロジェクトに適しています。 2。API開発:フラスコまたはdjangorestFrameworkを使用して、Restfulapiを構築します。 3。データ分析と視覚化:Pythonを使用してデータを処理し、Webインターフェイスを介して表示します。 4。機械学習とAI:Pythonは、インテリジェントWebアプリケーションを構築するために使用されます。 5。パフォーマンスの最適化:非同期プログラミング、キャッシュ、コードを通じて最適化

Pythonは開発効率でCよりも優れていますが、Cは実行パフォーマンスが高くなっています。 1。Pythonの簡潔な構文とリッチライブラリは、開発効率を向上させます。 2.Cのコンピレーションタイプの特性とハードウェア制御により、実行パフォーマンスが向上します。選択を行うときは、プロジェクトのニーズに基づいて開発速度と実行効率を比較検討する必要があります。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境
