【问题标题】:Edit multiselect field?编辑多选字段?
【发布时间】:2021-08-23 22:51:48
【问题描述】:

所以我的模型中有一个 ManyToMany 字段,Django 管理员将其呈现为多选字段。它工作正常,我没有任何问题 — 除了创建记录后我无法编辑它。 我试过Del键,鼠标右键,没有任何效果。看来我必须删除记录并重新创建?

这是我要编辑的字段。我想删除上述项目中的一项或两项。我在 Windows 上。

【问题讨论】:

  • 如帮助文本所述,按住“控制”或“命令”。这与取消选择的方式相同。
  • 试过几次。没用。
  • @AbdulAzizBarkat 如果我持有CTRL 并取消选择所有 项,它会起作用。但如果我持有CTRL 并仅取消选择 2 或 3,则不会。
  • 您是否以超级用户身份登录?如果没有(员工也可以登录管理员),问题可能是您没有相关模型的更改权限。

标签: django django-admin


【解决方案1】:

嗯,看起来有一个更简单的解决方案:

Webdev Hints 提供)

这是我的模型:

class Technology(models.Model):
    title = models.CharField(max_length=10)

    def __str__(self):
        return self.title

    class Meta:
        verbose_name_plural = 'Technologies'


class Project(models.Model):
    title = models.CharField(max_length=100)
    description = HTMLField()
    technology = models.ManyToManyField(Technology, related_name='projects')
    image = models.ImageField(upload_to='projects/')

    def __str__(self):
        return self.title

而解决方法是在admin.py中添加以下内容:

@admin.register(Technology)
class TechnologyAdmin(admin.ModelAdmin):
    pass


class TechnologyInline(admin.TabularInline):
    model = Project.technology.through


@admin.register(Project)
class ProjectAdmin(admin.ModelAdmin):
    inlines = (TechnologyInline,)
    exclude = ('technology',)

现在ManyToMany 字段是可编辑的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-13
    • 2012-10-09
    • 2011-06-26
    • 2022-01-19
    • 2011-08-15
    • 2020-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多