【发布时间】:2016-12-15 18:12:20
【问题描述】:
我有一个包含一些字段的模型。考虑下面的模型。
class Item(models.Model):
a = models.CharField(max_length=200)
b = models.BooleanField(default=False)
c = models.CharField(max_length=200)
对应模型的表单类。
class ItemForm(ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
class Meta:
model = Item
localized_fields = '__all__'
fields = [
'a',
'b',
'c',
]
还有表单的视图。视图类使用显示所有字段的模板。但只有当 字段 b 为真时,才会显示 字段 c。
{% if form.b.value %}
{% form.c %}
{% endif %}
c 字段不可编辑,我只想显示已经预定义的值。
问题是,如果我在模板中使用if 条件,(假设b 为假)当我加载表单时,它会显示2 个字段a 和b,当我提交表单时b 设置为 true,表单重新加载而不保存显示所有三个字段,字段 c 的值为空白。
字段c 已经有一个值并且它存在于数据库中,但它没有显示出来。这是为什么呢?
编辑:这是我的观点,很简单
class ItemGeneral(UpdateView):
form_class = ItemUpdateForm
template_name = 'pretixcontrol/item/index.html'
permission = 'can_change_items'
@transaction.atomic()
def form_valid(self, form):
# some code
return super().form_valid(form)
【问题讨论】:
-
您可以尝试将 c 设置为只读而不是不可编辑吗?那它有用吗?
标签: django python-3.x django-forms django-views