ModelAdmin objectsを使用して独自のフォームを指定する方法があります。独自のフォームを指定することにより、フォームの構成と検証を完全に制御できます。
FKがUser
であるモデルがFoo
であるとします。
あなたmyapp/models.py
は次のようになります。
from django.db import models
from django.contrib.auth.models import User
class Foo(models.Model):
user = models.ForeignKey(User)
some_val = models.IntegerField()
あなたは、このような何かを含むmyapp/admin.py
ファイルを作成します。あなたはこれをやったら
from django.contrib.auth.models import User
from django import forms
from django.contrib import admin
class FooAdminForm(forms.ModelForm):
user = forms.ModelChoiceField(queryset=User.objects.order_by('username'))
class Meta:
model = Foo
class FooAdmin(admin.ModelAdmin):
form = FooAdminForm
admin.site.register(Foo, FooAdmin)
を、<select>
ドロップダウンがご注文されますユーザオブジェクトはユーザ名に従っています。 Foo
の他のフィールドを心配する必要はありません... FooAdminForm
クラスでオーバーライドを指定するだけです。残念ながら、管理サイトに表示するFK to Userを持つすべてのモデルに対して、このカスタムフォーム定義を提供する必要があります。上記
これは私のためにうまくいった – Rasiel
注文は素晴らしいですが、今ではそれらのフィールドが必要に応じて登場しています。どうしたらいいですか? – thumbtackthief