2010-02-11 6 views
24

Kann ein Feld vom Typ models.PositiveIntegerField einen 0-Wert enthalten? Ich mache so etwas wie:0 Wert in Django PositiveIntegerField?

points = models.PositiveIntegerField(default=0) 

Danke,

Ich weiß, ich sollte ir selbst versuchen, aber ich habe keine hier Django-Umgebung.

Antwort

5

ja.

Das sagt model field reference so. Der Vollständigkeit halber auch hier zitiert:

PositiveIntegerField

class PositiveIntegerField([**options]) 

Wie ein Integer, muss aber entweder positiv oder Null (0) sein. Der Wert 0 wird aus Gründen der Rückwärtskompatibilität akzeptiert.

1

Für diejenigen, die die 0 ausschließen möchten, ist es einfach, dafür eine validator zu schreiben.

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

und dann verwenden, als solche

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

FYI: Das funktioniert nur durch die ModelForm speichern. – Babu

+0

was sagst du dazu? – shadi

+1

Kann meine persönliche Erfahrung sein. Und damit auf den Dokumenten gesagt, https://docs.djangoproject.com/en/1.11/ref/validators/#how-validators-are-run kann ich in jeden Teil der Welt gehen und es laut rufen. :) – Babu

0

Gut durch die Definition einer positiven ganzen Zahl, sollte es einen Nullwert nicht annehmen, aber django hält es tatsächlich im Sinne keine negativen Nummer, die Null ist inklusive. Also, ja, es kann einen Nullwert annehmen