Django admin - 内联数据库中的选项

时间:2016-09-10 18:11:45

标签: python django django-admin

我需要一些django管理站点的基本帮助。我基本上想要做的是能够使用数据库中的选项填充内联。例如,考虑以下模型:

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中插入类别,当我想插入一个项目时,内联类别将填充db中的类别。

使用当前设置它无法正常工作。它说类别不是可迭代的对象。我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

您应该将ChoiceField替换为ModelChoiceField。它们允许您指定一个查询集来填充选项。

category = forms.ModelChoiceField(queryset=Category.objects.all(), empty_label="(Nothing)")