2017-05-17 12 views
0

フォームフィールドが負の値を受け付けないように、DjangoでFloatFieldの最小値を設定します。 Integersの場合、データ型をPositiveIntegerFieldに変更しましたが、floatフィールドの場合は最小値が機能しません。私はこのような同じことを行っているバリデータ= [MinValueValidator]がDjangoで動作しない

from django.core.validators import MaxValueValidator, MinValueValidator 

max_discount = models.FloatField(verbose_name=u'Maximum Discount', validators = [MinValueValidator(0.0)]) 
+0

あなたの 'max_discount'フィールドはokです。 「うまくいかない」とはどういう意味ですか?あなたは何をしようとしていますか、何が起こると思いますか、何が起こりますか? – Alasdair

+0

フォームが送信されたときにバリデーターが動作することがわかりましたが、フィールドでPositiveIntegerFieldのように負の値を入力することはできませんでした。 –

答えて

0

、私はこのような割引コードを設定している

from django.db import models 
from django.core.validators import MinValueValidator, MaxValueValidator 

class Coupon(models.Model): 
    code = models.CharField(max_length=50, 
           unique=True) 
    valid_from = models.DateTimeField() 
    valid_to = models.DateTimeField() 
    discount = models.IntegerField(
         validators=[MinValueValidator(0), 
            MaxValueValidator(100)]) 
    active = models.BooleanField() 
    def __str__(self): 
     return self.code 

discount = models.IntegerField(
          validators=[MinValueValidator(0), 
             MaxValueValidator(100)]) 

割引:割引率は、(適用するには、このパーセンテージでありますしたがって、0から100の値をとります)。このフィールドにバリデーターを使用して、最小値と最大値を制限します。

この方法で試してみてください。

ありがとうございました。

+0

バリデーターは整数フィールドでもfloatfieldでも使用できません。私はその問題が何であるか知っていません。 –

+0

@ManpreetAhluwalia、あなたは "virtualenv"を持ったプロジェクトですか?そうでない場合は、これを使用してプロジェクトディレクトリを保護します。これが問題の原因となることがあります。私は何度も経験しました。自動的に問題を解決する可能性があります。ありがとう。 –

+0

フォームが送信されたときにバリデーターが動作することがわかりましたが、フィールドでPositiveIntegerFieldのように負の値を入力することはできませんでした。 –

0

あなたのコード:

from django.core.validators import MaxValueValidator, MinValueValidator 

max_discount = models.FloatField(verbose_name=u'Maximum Discount', validators = [MinValueValidator(0.0)]) 

は正常に見えます。 あなたがモデルを保存するときに

バリデータが自動的に実行されることはありませんけれどもあなたは注意する必要がありますが、あなたはのModelFormを使用している 場合、それはあなたのフォームに含まれているすべてのフィールド であなたのバリデータを実行します。

詳細はdocsを参照してください。

次の例のように、あまりにもフォーム内のHTML属性の検証のいくつかの並べ替えを追加することができます。

<input type="number" min="0.0"> 

、サーバー側の検証に。

EDIT

フォームフィールドを使用すると、このフィールドにウィジェット(基本的にはHTML)をカスタマイズすることができ、管理インターフェースである場合。 here adminインターフェースのフィールドにカスタムウィジェットを追加する方法を参照してください。

+0

oOoo ...フォームが送信されると、検証メッセージが表示されますか? しかし、フィールドでPositiveIntegerFieldのように負の値を入力することはできませんでした。 –

+0

@ManpreetAhluwalia私は答えを更新しました – doru

+0

私はdjango管理インターフェイスで作業しているテンプレートがありません。 –

関連する問題