相关疑难解决方法(0)

在Django表单中,如何将字段只读(或禁用)以使其无法编辑?

在Django表单中,如何将字段设置为只读(或禁用)?

当表单用于创建新条目时,应启用所有字段 - 但是当记录处于更新模式时,某些字段必须是只读的.

例如,在创建新Item模型时,所有字段都必须是可编辑的,但在更新记录时,有没有办法禁用该sku字段以使其可见,但无法编辑?

class Item(models.Model):
    sku = models.CharField(max_length=50)
    description = models.CharField(max_length=200)
    added_by = models.ForeignKey(User)


class ItemForm(ModelForm):
    class Meta:
        model = Item
        exclude = ('added_by')

def new_item_view(request):
    if request.method == 'POST':
        form = ItemForm(request.POST)
        # Validate and save
    else:
            form = ItemForm()
    # Render the view
Run Code Online (Sandbox Code Playgroud)

班级ItemForm可以重复使用吗?ItemForm或者Item模型类需要进行哪些更改?我是否需要编写另一个类" ItemUpdateForm"来更新项目?

def update_item_view(request):
    if request.method == 'POST':
        form = ItemUpdateForm(request.POST)
        # Validate and save
    else:
        form = ItemUpdateForm()
Run Code Online (Sandbox Code Playgroud)

forms django field readonly

403
推荐指数
17
解决办法
25万
查看次数

如何禁用django表单中的模型字段

我有这样的模型:

class MyModel(models.Model):
    REGULAR = 1
    PREMIUM = 2
    STATUS_CHOICES = ((REGULAR, "regular"), (PREMIUM, "premium"))
    name = models.CharField(max_length=30)
    status = models.IntegerField(choices = STATUS_CHOICES, default = REGULAR)

class MyForm(forms.ModelForm):
    class Meta:
        model = models.MyModel
Run Code Online (Sandbox Code Playgroud)

在视图中,我初始化一个字段并尝试使其不可编辑:

myform = MyForm(initial = {'status': requested_status})
myform.fields['status'].editable = False
Run Code Online (Sandbox Code Playgroud)

但是用户仍然可以更改该字段.

什么是实现我追求的真正方式?

python django django-forms

14
推荐指数
3
解决办法
3万
查看次数

标签 统计

django ×2

django-forms ×1

field ×1

forms ×1

python ×1

readonly ×1