2

よくある問題のようですが、ここで他の質問で提案されている解決策は私にはうまくいかないようです。

いくつかの日付をhtmlフォームで送信していますが、一部は必須ではなく、空白にすることもできます。しかし、私はエラーが発生しています

[u'Enter a valid date in YYYY-MM-DD format.']

以下は私のモデルファイルです

class ProjectM(models.Model):
    order_received = models.DateField(null=True,blank=True)

MySQL DB

Field                  | Type         | Null | Key | Default | Extra
order_received         | date         | YES  |     | NULL    |                

したがって、私が理解しているように、モデルファイルでnullと空白の場合はTrueに設定し、mysqlDBでNULLを許可していることを確認する必要があります。ただし、上記の検証エラーが発生します。この特定のフィールドのPOSTデータの値を確認すると、''になります。生成されているhtmlの値を変更して、空のフィールドをチェックし、値を「null」にしようとしましたが、これも機能していないようです。

どんな助けもいただければ幸いです:)

更新:@Cathy、これが問題を説明するモードコードです。問題とはまったく関係のないコードをいくつか省略し、少し簡略化しました。基本的に、私は小さなデータベースWebフロントを構築しています。これは、レコードを引き出し、表形式でフォームに表示し、レコードを編集および更新できるようにするだけです。空白の日付フィールドは正常に表示されますが、更新できません。

レンプレート

{% for record in records %}
<form method="post" action="">
<tr>
<td><input type="submit" value="{{ record.id }}" name="submit"></td>
<td><input type="text" value="{{ record.pm }}" name="pm"></td>
<td><input type="text" value="{{ record.spec }}" name="spec"></td>
<td><input type="date" value="{{ record.order_received|date:"Y-m-d" }}" name="order_received"></td>
</tr>
</form>
{% endfor %}

モデル

class ProjectM(models.Model):
    pm = models.CharField(max_length="200")
    spec = models.CharField(max_length="200")
    order_received = models.DateField(null=True,blank=True)

意見

def all(request):
    if request.method == 'POST':
        id = request.POST['submit']
        pm = request.POST['pm']
        spec = request.POST['spec']
        order_received = request.POST['order_received']
        if not order_received:
            order_received = 'None'
        update = ProjectM.objects.get(pk=int(id))
        update.pm = pm
        update.spec = spec
        update.order_received = order_received
        update.save()

テンプレートコードを更新する

{% if record.order_received %}
 <td>
  <div class="styled-dateentered">
   <input class="entered" name='order_received{{ record.id }}' id="order_received{{ record.id }}" type="date" value="{{ record.order_received|date:"Y-m-d" }}">
  </div>
 </td>
{% else %}
 <td>
  <div class="styled-datenotentered">
   <input class="notentered" id="order_received{{ record.id }}" name="order_received{{ record.id }}" type="date" value="None">
  </div>
 </td>
{% endif %}

これがお役に立てば幸いです。私は本当に助けに感謝します。

ありがとう

4

1 に答える 1

2

ModelFormたとえば、このモデルを表すウィッチを使用している場合ProjectM:

class ProjectMForm(ModelForm):
    class Meta:
        model = ProjectM

問題はないはずですが、このフォームに というフィールドがorder_receivedなく、このフォームにrequired=Falseパラメータがないことを確認してくださいform。この名前のフィールドが必要な場合は、次のようにする必要があります。order_received = forms.DateField(required=False)

于 2013-02-07T07:46:49.503 に答える