2016-09-10 14 views
0

django管理者サイトの基本的なヘルプが必要です。私が基本的にしたいのは、データベースからの選択肢をインラインに取り込めるようにすることです。たとえば、次のモデルを考えてみます。Django admin - データベースの選択肢とインラインで表示

class Item(models.Model): 
    description = models.CharField(max_length=100) 

class Category(models.Model): 
    name = models.CharField(max_length=100) 
    item = models.ForeignKey(Item, on_delete=models.CASCADE, null=True, blank=True) 

そしてadmin.pyに、私は次のセットアップ持っている:私は行うことができるようにしたいどのような

class CategoryAdminForm(forms.ModelForm): 
    name = forms.ChoiceField(choices = category_service.get_all_categories()) 

class CategoryInline(admin.TabularInline): 
    model = Category 
    form = CategoryAdminForm 

class ItemAdmin(admin.ModelAdmin): 
    inlines = [CategoryInline] 

admin.site.register(Item, ItemAdmin) 
admin.site.register(Category) 

はデシベルにカテゴリを挿入することであり、アイテムを挿入する場合は、カテゴリをインラインにして、dbのカテゴリを取り込みます。

現在の設定では機能しません。カテゴリは反復可能なオブジェクトではないという。私はここで何が欠けていますか?

答えて

0

ChoiceFieldModelChoiceFieldに置き換える必要があります。それらを使用して、クエリーセットを指定して選択肢を設定することができます。

category = forms.ModelChoiceField(queryset=Category.objects.all(), empty_label="(Nothing)") 
関連する問題