2010-02-11 19 views
24

¿Puede un campo de tipo modelos.PositivoIntegerField contiene un valor de 0? Que estoy haciendo algo como:0 valor en Django PositiveIntegerField?

points = models.PositiveIntegerField(default=0) 

Gracias,

Sé que debería tratar de ir yo mismo, pero no tiene un entorno Django aquí.

Respuesta

5

Sí.

Lo dice model field reference. Para completar, también citado aquí:

PositiveIntegerField

class PositiveIntegerField([**options]) 

Como un IntegerField, sino que debe ser positivo o cero (0). El valor 0 se acepta por razones de compatibilidad con versiones anteriores.

1

Para aquellos que buscan excluir el 0, es fácil escribir un validator para eso.

def validate_nonzero(value): 
    if value == 0: 
     raise ValidationError(
      _('Quantity %(value)s is not allowed'), 
      params={'value': value}, 
     ) 

y luego usarlo como tal

fill_qty = models.PositiveIntegerField(
    default=0, 
    validators=[MaxValueValidator(1000000), validate_nonzero] 
) 
+0

FYI: Esto funciona solo a través del ahorro de ModelForm. – Babu

+0

¿qué te hace decir eso? – shadi

+1

Puede ser mi experiencia personal. Y con esto dicho en los documentos, https://docs.djangoproject.com/en/1.11/ref/validators/#how-validators-are-run puedo ir a cualquier parte del mundo y gritarlo en voz alta. :) – Babu

0

Bien por la definición de un número entero positivo, no debe aceptar un valor de cero, pero en realidad Django considera en el sentido de que ninguno negativo número que es cero inclusive Entonces, sí puede aceptar un valor cero

Cuestiones relacionadas