Django admin中的ForeignKey Inline下拉菜单

时间:2018-05-07 14:01:49

标签: django django-admin

我有一个包含以下模型的项目

class Recipe(models.Model):
    title = models.CharField("Title", max_length = 200, blank=False)
    content = RichTextUploadingField("Content")

class Tag(models.Model):
    name = models.CharField("Tag", max_length = 50)
    recipe = models.ForeignKey(Recipe)

以及以下admin.py

class TagInline (admin.StackedInline):
    model = Tag

class RecipePage(admin.ModelAdmin):
    list_display = ('title')
    list_display_links = ('title')
    fields = ('title', 'content')
    list_per_page = 25

    inlines = (TagInline)

对于每个内联,我希望Django的管理员根据已经输入的标签显示标签名称列表作为下拉菜单。当然,如果没有合适的标签,用户必须能够添加新的标签名称作为标签对象。我可以很容易地实现这一点没有内联,但 它,我无法做到。有任何想法吗?

1 个答案:

答案 0 :(得分:0)

内联中的每一行代表“Tag”表的一条记录,或“Tag”类的对象。 输入此内联的新条目意味着您实际上是在一个“配方”下创建新标签。 “标签”表的“配方”列将填充配方表的主键。

我真的不明白为什么你需要内联。如果您需要将多个标签标记为一个配方,那么您可以使用ManyToManyFields,在这种情况下,您可以在下拉列表中选择多个标签。(此django管理员将采取,您只需要将配方类型更改为ManytoManyField)