Estoy haciendo las aplicaciones de encuestas en Django Documentation: Writing your first Django app, part 2 . Mientras trabajaba con la API de la base de datos, encontré un IntegrityError.
encuestas/modelos.py
class Question(models.Model): question_text=models.CharField(max_length=200) pub_date=models.DateTimeField('date published')Intenté crear un objeto del modelo Pregunta.
Question.objects.create(question_text="What's up?")Esto da un error
IntegrityError: restricción NOT NULL falló: polls_question.pub_date
Pero cuando intento esto
Question.objects.create(pub_date=timezone.now())Crea un objeto con éxito.
¿Cuál es el motivo de IntegrityError en el primer caso y por qué no genera ningún error en el segundo caso?
De django doc
Evite usar null en campos basados en cadenas como CharField y TextField. Si un campo basado en cadenas tiene null=True, eso significa que tiene dos valores posibles para "sin datos": NULL y la cadena vacía. En la mayoría de los casos, es redundante tener dos valores posibles para "sin datos"; la convención de Django es usar la cadena vacía, no NULL.
null=False (predeterminado), Django usará una cadena vacía (significa que no es NULL)null=True , Field puede escribir NULL (significa que None llega a python) En resumen : Django no generará la IntegrityError: NOT NULL constraint para CharField y TextField .