python - 如何使django脆皮形式隐藏特定字段?

标签 python django django-forms django-crispy-forms

我正在尝试制作我的 date_modified自从我通过后,字段被隐藏 datetime.now定义参数 date_modified模型中的字段。
model.py

class Guide(models.Model):
    name = models.CharField(max_length=50)
    sno = models.CharField(max_length=50)
    date_created = models.DateTimeField(default=datetime.now, blank=True)
    date_modified = models.DateTimeField(default=datetime.now, blank=True)

    def __unicode__(self):
        return unicode(self.name)
views.py
class GuideFormUpdateView(UpdateView):
    model = Guide
    fields = ['name', 'sno', 'date_modified']
    template_name_suffix = '_update_form'
    success_url = reverse_lazy('Guides')

对应表格forms.py好像
<form role="form" method="POST" action="{% url 'Guideform-edit' object.pk %}"
              class="post-form form-horizontal" enctype="multipart/form-data">{% csrf_token %}
{{ form|crispy }}
<button type="submit" value="Upload" class="save btn btn-default btn-primary center-block">Update</button>

        </form>

此表单显示 date_modified field 。但是我不想在前端使用这个字段,而是希望模型或 db_table 中这个字段的值应该得到更新。我知道如何在 jquery 中隐藏这个特定字段,但我不想接触那些 js 工具。有什么办法可以制作crispy排除该特定字段,如 {{ form|crispy|exclude:date_modified }} ..

最佳答案

而不是使用您的 UpdateView 的通用表单将隐式使用,创建您的自定义表单。并在您的自定义表单中更改 date_modified 的小部件 field 。

在你的 forms.py 中

from django.forms import ModelForm, HiddenInput
class GuideForm(ModelForm):
    def __init__(self, *args, **kwargs):
        super(GuideForm, self).__init__(*args, **kwargs)
        self.fields['date_modified'].widget = HiddenInput()

    class Meta:
        fields = ('name', 'sno', 'date_modified', )
        model = models.Guide

在你的 views.py 中
class GuideFormUpdateView(UpdateView):
    model = Guide
    form_class = forms.GuideForm
    template_name_suffix = '_update_form'
    success_url = reverse_lazy('Guides')

自动更新 date_modified无论何时更新记录,都需要使用属性 auto_nowauto_now_add而不是 default .见 Docs .所以你的模型将是
class Guide(models.Model):
    name = models.CharField(max_length=50)
    sno = models.CharField(max_length=50)
    date_created = models.DateTimeField(auto_now_add=True, blank=True)
    date_modified = models.DateTimeField(auto_now=True, blank=True)

    def __unicode__(self):
        return unicode(self.name)

关于python - 如何使django脆皮形式隐藏特定字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35270111/

相关文章:

python - 文本分类与推荐

Python Django Queryset 仅从日期获取月份和年份

python - 将 Qdockwidget 限制在一个象限而不是左/右/上/下

python - Django:为什么当前 URL 不匹配 urls.py 中的任何模式

javascript - 如何在多次克隆表单时使用 javascript 或 jquery 自动滚动到焦点输入字段分区

python - Django : Extract data from table to initially populate a form

android - 我可以基于 Python 代码为 Android 和/或 iOS 创建可执行代码吗?

python - Django Allauth 和 url

python - 将 GEO 数据库与普通数据库分离

Django:密码字段 "This field is required"错误