当前位置: 首页 > 知识库问答 >
问题:

如何在Django 2模型和模板中使用DatetimeField

吕鸿朗
2023-03-14

我正在做一个项目,我需要使用几个DateTime字段,我已经在我的模型中定义了DatetimeField,然后在模板中,我正在使用https://tempusdominus.github.io/bootstrap-4/插件,但是当我提交表单时,有两个问题来吧:

1) :Django说为所有DateTime字段输入有效的日期/时间(2):选择有效选项<代码>[“玉米油”]不是可用选项之一。

以下是我尝试过的:

模型。py

choices = (
    ('CO2 SCRUBBER', 'CO2 SCRUBBER'),
    ('corn_oil', 'CORN OIL'),
    ('DRYERS', 'DRYERS'),
    ('ENVIRONMENTAL', 'ENVIRONMENTAL'),
    ('UTILITIES', 'UTILITIES'),
    ('LAB', 'LAB'),
    ('SIEVES', 'SIEVES'),
    ('GRAINS & MILLING', 'GRAINS & MILLING'),
    ('SEPARATION', 'SEPARATION'),
    ('AIR & GAS', 'AIR & GAS'),
    ('COOK', 'COOK'),
    ('EVAPORATION', 'EVAPORATION'),
    ('WATER', 'WATER'),
    ('STORAGE', 'STORAGE'),
    ('BOILER', 'BOILER'),
    ('FERMENTATION', 'FERMENTATION'),
    ('DISTILLATION', 'DISTILLATION'),
    ('BUILDING AND FACILITIES', 'BUILDING AND FACILITIES'),
    ('CHEMICAL', 'CHEMICAL'),
)


class ExperimentModel(models.Model):
    user = models.ForeignKey(User, related_name='experiments',
                             on_delete=models.CASCADE)
    name = models.CharField(max_length=255)
    start_date = models.DateTimeField()
    change_date = models.DateTimeField()
    end_date = models.DateTimeField()
    assets = models.CharField(max_length=450, choices=choices)
    goals = models.CharField(max_length=255, blank=True)
    comments = models.TextField(max_length=1000)
    created_at = models.DateTimeField(auto_now=True)

forms.py

class ExperimentForm(forms.ModelForm):
    choices = (
        ('CO2 SCRUBBER', 'CO2 SCRUBBER'),
        ('corn_oil', 'CORN OIL'),
        ('DRYERS', 'DRYERS'),
        ('ENVIRONMENTAL', 'ENVIRONMENTAL'),
        ('UTILITIES', 'UTILITIES'),
        ('LAB', 'LAB'),
        ('SIEVES', 'SIEVES'),
        ('GRAINS & MILLING', 'GRAINS & MILLING'),
        ('SEPARATION', 'SEPARATION'),
        ('AIR & GAS', 'AIR & GAS'),
        ('COOK', 'COOK'),
        ('EVAPORATION', 'EVAPORATION'),
        ('WATER', 'WATER'),
        ('STORAGE', 'STORAGE'),
        ('BOILER', 'BOILER'),
        ('FERMENTATION', 'FERMENTATION'),
        ('DISTILLATION', 'DISTILLATION'),
        ('BUILDING AND FACILITIES', 'BUILDING AND FACILITIES'),
        ('CHEMICAL', 'CHEMICAL'),
    )
    assets = forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple,
                                       choices=choices)
    # assets = ModelMultipleChoiceField(queryset=Thing.objects.all(), widget=Select2MultipleWidget)

    class Meta:
        model = ExperimentModel
        fields = ('user', 'name', 'start_date', 'change_date', 'end_date', 'assets',
                  'goals', 'comments')

视图。py:def post(self,request,*args,**kwargs):post_data=request。邮递复制()post_数据。如果请求,更新({'user':request.user.pk})form=ExperimentForm(post_数据)。方法=='POST':如果是表单,则打印('req PROMITED')。is_valid():打印('form valid')表单。保存(提交=False)表单。用户=请求。用户表单。save()返回HttpResponseRedirect('all-experiments')返回render_to_response('experiment/new_experience.html',{'form':form})

这里我是如何在我的模板中显示DateTime字段和选择字段的:从new-experiment.html

<div class="form-group">
                <input type="text" name="name" id="name" class="form-control input-lg"
                       placeholder="experiment name" tabindex="3" required>
            </div>
            <div class="form-group">
                <label for="datetimepicker1"> Start Date </label>
                <div class="input-group date" id="datetimepicker1" data-target-input="nearest">
                    <input type="text" name="start_date" class="form-control datetimepicker-input"
                           data-target="#datetimepicker1"/>
                    <div class="input-group-append" data-target="#datetimepicker1" data-toggle="datetimepicker">
                        <div class="input-group-text"><i class="fa fa-calendar"></i></div>
                    </div>
                </div>
            </div>
            <div class="form-group">
                <label for="datetimepicker2"> Change Date </label>
                <div class="input-group date" id="datetimepicker2" data-target-input="nearest">
                    <input type="text" name="change_date" class="form-control datetimepicker-input"
                           data-target="#datetimepicker2"/>
                    <div class="input-group-append" data-target="#datetimepicker2" data-toggle="datetimepicker">
                        <div class="input-group-text"><i class="fa fa-calendar"></i></div>
                    </div>
                </div>
            </div>
            <div class="form-group">
                <label for="datetimepicker3"> End Date </label>
                <div class="input-group date" id="datetimepicker3" data-target-input="nearest">
                    <input type="text" name="end_date" class="form-control datetimepicker-input"
                           data-target="#datetimepicker3" placeholder="dd/mm/yy"/>
                    <div class="input-group-append" data-target="#datetimepicker3" data-toggle="datetimepicker">
                        <div class="input-group-text"><i class="fa fa-calendar"></i></div>
                    </div>
                </div>
            </div>

            <script type="text/javascript">
                $(function () {
                    $('#datetimepicker1').datetimepicker();
                    $('#datetimepicker2').datetimepicker();
                    $('#datetimepicker3').datetimepicker();
                });
            </script>
            <div class="form-group">
                <label for="assets"> Assets </label>
                                <input type="text" name="assets" id="assets" class="form-control input-lg"
                                       placeholder="Assets" tabindex="3" required>
                <select name="assets" class="form-control select_field_class" id="assets">
                    <option value="CO2 SCRUBBER">CO2 SCRUBBER</option>
                    <option value="corn_oil">CORN OIL</option>
                    <option value="DRYERS">DRYERS</option>
                    <option value="ENVIRONMENTAL">ENVIRONMENTAL</option>
                    <option value="UTILITIES">UTILITIES</option>
                    <option value="LAB">LAB</option>
                    <option value="SIEVES">SIEVES</option>
                    <option value="GRAINS & MILLING">GRAINS & MILLING</option>
                    <option value="SEPARATION">SEPARATION</option>
                    <option value="AIR & GAS">AIR & GAS</option>
                    <option value="COOK">COOK</option>
                    <option value="EVAPORATION">EVAPORATION</option>
                    <option value="WATER">WATER</option>
                    <option value="STORAGE">STORAGE</option>
                    <option value="BOILER">BOILER</option>
                    <option value="FERMENTATION">FERMENTATION</option>
                    <option value="BUILDING AND FACILITIES">BUILDING AND FACILITIES</option>
                    <option value="CHEMICAL">CHEMICAL</option>
                </select>
            </div>
            <div class="form-group">
                <label for="assets"> Goals </label>
                <input type="text" name="goals" id="goals" class="form-control input-lg"
                       placeholder="Goals" tabindex="3" required>
            </div>
            <div class="form-group">
                <label for="comments"> Comments </label>
                <textarea name="comments" id="comments" class="form-control input-lg"
                          rows="5" required>
                    </textarea>
            </div>

我也想对资产使用multi-select,但尚未实现。

请给我掌舵!

提前谢谢!

共有1个答案

聂建茗
2023-03-14
import datetime

class ExperimentModel(models.Model):
    start_date = models.DateTimeField(auto_now_add=True, blank=True)
    change_date = models.DateTimeField(blank=True)
    end_date = models.DateTimeField(blank=True)
 类似资料:
  • 我有一个非常特殊的例子,我需要在一个模板文本中使用一个模板文本,但是我做不到。 代码如下所示: 然而,我必须将其包装在函数中,同时保持变量的值,这会导致错误发生。无论我是否逃脱了滴答声。 使用转义滴答,我收到以下错误消息: 错误:预期的某个链接但未提供 没有,我得到: 意外标记,预期“”,” 我该怎么处理这件事? 编辑:可能应该注意的是,中传递的代码将被渲染并且需要使用它。它最终将通过传递给另一个

  • 使用,我在基本模板中定义了一个,其中包含默认内容。在某些情况下,我希望这个块为空,所以我想我可以重新定义它的名称,并使它不包含以下内容: 不知何故,Go似乎认为这个定义是“零”,并且仍然会呈现默认内容,除非我将任何非空白内容放入定义中。 我在Golang repo上发现了这个问题,它在一个游乐场示例中很好地描述了同样的事情: 奇怪的是,这个问题提到它是固定的(如果我理解正确的话,它在1.8.1中着

  • 我有这个Go模板: 我正在尝试使用此模板: 然而,它不起作用,因为正如text/templategodoc所说,对和/或函数的参数都进行了求值。 当<code>$b.Trigger时。名称被求值,因为可以为零。因此它返回错误:

  • 我正在使用XML构建调查。调查中的一个(矩阵)问题,具有列和行,如下所示: 我想使用不同的XSLT模板,这取决于 节点。因此,尽管所有问题都是以相同的方式构建的,但它们看起来可能不同。我想用不同的。每个问题类型的XSLT文件,定义问题、列和行的外观。 如果我使用以下代码包括“模块/模板”: 该模板包含问题、行和列的格式定义。如果同一页面上有不同类型的问题,会不会出现干扰,因为定义每种类型的问题、行

  • 在 Adobe Illustrator 版本 CC 2015.3 及更早版本中创建文档... 注意:本文与 Adobe Illustrator CC 2015.3 及更早版本有关。从 CC 2017 版开始,Illustrator 提供了一种新的文档创建体验。现在,创建新文档时,您可以从多种模板和预设中进行选择,其中包括来自 Adobe Stock 的模板。有关详细信息,请参阅创建文档。 关于新文