Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да съхранявате празна стойност като цяло число

Низът не е цяло число; и празен низ не е None или NULL . Това, което трябва да направите, е да хванете онези случаи, в които полето е празно и след това да го прехвърлите към None .

foo = "something" # "something" is coming from your CSV file

try:
   val = int(foo)
except ValueError:
   # foo is something that cannot be converted to
   # a number. It could be an empty string, or a
   # string like 'hello'
   # provide a default value
   val = None

# Now use val to insert into the database
f = MyModel()
f.age = val
f.save()

blank е строго за проверка на предния край; това не оказва никакво влияние върху страната на базата данни:

null от друга страна, има общо с базата данни:

IntegerField изисква стойност, която може да се преобразува в цяло число, така че когато подадете празен низ , не може да го хвърли и повдига изключение. Вместо това, ако подадете None и имате age = models.IntegerField(null=True) , то знае да го съхранява правилно.

За да обобщим:

  • age = models.IntegerField()

    Полето е задължително и се нуждае от валидна целочислена стойност. Няма да приеме None и няма да има нулеви стойности в базата данни. Валидни стойности са -2147483648 до 2147483647

  • age = models.IntegerField(null=True)

    Полето е задължително (валидиране на формуляра). Ако полето има None като стойност, тя ще бъде преведена на NULL в базата данни.

  • age = models.IntegerField(blank=True, null=True)

    Полето не е задължително (валидиране на формуляра). Ако полето е предадено в None , той ще бъде преведен на NULL

  • age = models.IntegerField(blank=True)

    Полето не е задължително (проверка на формуляра), но трябва да се предаде валидна целочислена стойност, тъй като базата данни не приема null. Обикновено тук ще му дадете стойност по подразбиране с default=0 или направете проверка, преди да изпратите стойността на организацията.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Неизвестен начален индекс на набора от символи '255', получен от сървъра

  2. Екраниращи символи като $ и % | MySQL и PHP

  3. @Column(unique=true) изглежда не работи

  4. Най-добрият метод за съхранение на списък с потребителски идентификатори

  5. MySQL изберете къде е равно на множество стойности