InlineModelAdmin
class InlineModelAdmin
class TabularInline
class StackedInline
舉例,有兩個Model:
from django.db import mod class. Field(max_length=100)
class Book(models.Model):
author = models.ForeignKey(Author)
title = models.CharField(max_length=100)頁
如果想在Authorlengthromdm 集
class BookInline(admin.TabularInline):
model = Book
class AuthorAdmin(admin.ModelAdmin):
inlines = [
提供了兩個InlineModelAdmin的子類別:
TabularInline
StackedInline
差別在於使用的範本。
InlineModelAdmin和ModelAdmin共通的options有:
fieldsets
fieldsformfield_overspops
form
fieldsets
formfield_overss_p _fields
get_queryset()radio_fields
readonly_fieldsraw_id_fields
formfield_for_choice_field()
formfield_for_foreignkey ()
formfield_for_manytomany()
has_add_permission()
has_change_permission()
has_delete_permission()
額外增加的options有:
語,ModelAdmin.Indelline,必需的使用。
InlineModelAdmin.fk_name
model的name,當有多個外鍵時使用。
InlineModelAdmin.formset
缺省BaseInlineFormSet。
InlineModelAdmin.form
inline的額外數目。
InlineModelAdmin.max_num
InlineModelAdmin.get_max_num()也傳回此數字。
InlineModelAdmin.min_num
可展示的最小數目。
InlineModelAdmin.get_min_num()也傳回此數目。
同ModelAdmin。
class BookInline(admin.TabularInline):
model = Book
InlineModelAdmin.template
所使用的模板。
InlineModelAdmin.verbose_name
覆蓋meta class中的verbose_name。
InlineModelAdmin.verbose_name_plural
InlineModelAdmin.can_delete
默認為True。
參考ModelAdmin.get_formsets_with_inlines.
def get_extra(self, request, obj=None, **kwargs):
set.count()
return extra
InlineModelAdmin.get_max_num(request , obj=None, **kwargs)
class BinaryTreeAdmin(admin.TabularInline):
model = BinaryTree
def get_max_num(self, request, obwar ):
if obj.parent : return max_num - 5
return max_num
InlineModelAdmin.get_min_num(request, objgs.
多個ForeignKey鏈向同一個Model的情況
如果有多個foreign keys:
from django.db import models
class Friendship(Fmodels.Model):
"friends")
from_person = models.ForeignKey(Person, related_name="from_friends")
展示其中一個:
from django.contrib
展示其中一個:
from django.contrib import adminmyship. Inline) :
model = Friendship
inlines = [
orking with many-to-many models
model範例:
from django .db import models
class Person(models.Model):
inlines展示:
from django.contrib import admin
class MembershipInline(admin.TabularInline):
model = Group.members.through
shipInline,
]
class GroupAdmin(admin .ModelAdmin):
inlines = [
MembershipInline,
]
exclude = ('members',)
exclude = ('members',)
The through attribute指向管理the many- to-many關係的資料庫.
第二,, the GroupAdmin 必須排除the members欄位.
Working with many-to-many intermediary models
語 djmodel
class Person(models.Model):name = models.CharField(max_length=128)
class Group(models.Model):
name = models.Fielield(max_length Person, through='Membership')
class Membership(models.Model):
person = models.ForeignKey(Person)
group = models.ForeignKey(Group)
date_Key) models.CharField(max_length =64)
第一步:
class MembershipInline(admin.TabularInline):
model = Membership
extra = 1
lines = (MembershipInline ,)
class GroupAdmin(admin.ModelAdmin):
第三步:
admin.site..Adm,
from django.db import models
from django.contrib.contentcontentsfields Keyl. image = models.ImageField(upload_to="images")
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
object_id = models.PositiveIntegerField()
object_id = models.PositiveIntegerField()
object_id = models.PositiveIntegerField() object_id = models.PositiveIntegerField()
object_id = models.PositiveIntegerField()
object_id = models.PositiveIntegerField() object_id = models.PositiveIntegerField() Product(models.Model):
如果想在Product add/change頁面上編輯Image實例,可以使用GenericTabularInline或GenericStackedInline:
. import GenericTabularInline
from myproject.myapp.models import Image, Product
class ImageInline(GenericTabularInline):
¦ ImageInline,
]
admin.site .register(Product, ProductAdmin)
以上就是Djangoadminsite(三)InlineModelAdmin的內容,更多相關內容請關注PHP中文網(www.php.cn)!