You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django Model多选表单渲染异常:无法实现Admin式可点击选择列表

问题:分类列表无法点击选择,需实现Django Admin同款可点击多选效果

我想展示所有分类,做成和Django Admin面板一致的可点击选择列表,但目前渲染出的列表无法点击选择。相关代码如下:

forms.py

class ProfileEditForm(forms.ModelForm):
    """
    Form for updating Profile data
    """

    class Meta:
        model = Profile

        fields = [
            "first_name",
            "last_name",
            "about_me",
            "profile_image",
            "username",
            "email",
            "categories",
        ]

    first_name = forms.CharField(label="First Name", max_length=63, required=False)
    last_name = forms.CharField(label="Last Name", max_length=63, required=False)
    about_me = forms.CharField(label="About Me", max_length=511, required=False)
    email = forms.EmailField(label="Email", disabled=True)
    username = forms.CharField(label="Username", disabled=True)
    profile_image = forms.ImageField(required=False)
    categories = forms.ModelMultipleChoiceField(
        queryset=Category.objects.all(),
        required=False,
        widget=forms.CheckboxSelectMultiple(),
    )

profile.models.py

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name="profile")
    first_name = models.CharField(max_length=63, blank=False)
    last_name = models.CharField(max_length=63, blank=False)
    about_me = models.CharField(max_length=511, blank=True)

    categories = models.ManyToManyField(
        Category, related_name="user_categories", symmetrical=False
    )

categories.models.py

from django.db import models


class Category(models.Model):
    name = models.CharField(max_length=63)

    created = models.DateTimeField(auto_now_add=True, blank=True, null=True)
    last_modified = models.DateTimeField(auto_now=True, blank=True, null=True)

    def __str__(self):
        return self.name

    def __unicode__(self):
        return self.name

    class Meta:
        verbose_name_plural = "Categories"

settings.html

<div class='row'>
            <div class="col s12 m6">
              {{form.categories.errors}}
              {{form.categories.label_tag}}
              {{form.categories}}
            </div>
</div>

预期效果

呈现类似Django Admin的可点击多选列表,每个分类选项前配有复选框,点击即可完成勾选或取消选择操作。

实际效果

渲染出的分类列表无法点击,复选框及选择区域无响应,无法完成选择操作。

内容的提问来源于stack exchange,提问作者osahenru

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 22:15:30