如何在 Django 中使用 Field.disabled

bga*_*ne7 3 forms django django-models python-3.x

我希望将 slug 输入字段设置为只读,但似乎无法正确利用“Field.disabled”。我怎样才能在一个简单的 Django 表单中做到这一点?

这是我的模型

class Article(models.Model):
    title = models.CharField(max_length=100)
    slug = models.SlugField()
    body = models.TextField()
    thumb = models.ImageField(default='default.png', blank=True)
Run Code Online (Sandbox Code Playgroud)

这是我的forms.py

class CreateArticle(forms.ModelForm):
    class Meta:
        model = models.Article
        fields = ['title', 'body', 'slug', 'thumb']
Run Code Online (Sandbox Code Playgroud)

NKS*_*KSM 7

您可以通过以下方法禁用您的slug字段__init__

class CreateArticle(forms.ModelForm):
    class Meta:
        model = models.Article
        fields = ['title', 'body', 'slug', 'thumb']

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields["slug"].disabled = True
        # Or to set READONLY
        self.fields["slug"].widget.attrs["readonly"] = True
Run Code Online (Sandbox Code Playgroud)