missing required Charfield in django is saved as empty string and do not raise an error

2024/10/13 19:17:26

If I try to save incomplete model instance in Django 1.10, I would expect Django to raise an error. It does not seem to be the case.

models.py:

from django.db import modelsclass Essai(models.Model):ch1 = models.CharField(max_length=100, blank=False)ch2 = models.CharField(max_length=100, blank=False)

So I have two fields not allowed to be empty (default behavior, NOT NULL restriction is applied by Django at MySQL table creation). I expect Django to rase an error if one of the fields is not set before storing.

However, when I create an incomplete instance, the data is stored just fine:

>>> from test.models import Essai
>>> bouh = Essai()
>>> bouh.ch1 = "some content for ch1"
>>> bouh.save()
>>> bouh.id
9
>>> bouh.ch1
'some content for ch1'
>>> bouh.ch2
''
>>> 

I would have expected Django to raise an error. If I force ch2 to None, however, it raises an error:

>>> bouh = Essai()
>>> bouh.ch1 = "some content for ch1"
>>> bouh.ch2 = None
>>> bouh.save()
Traceback (most recent call last):(...)return Database.Cursor.execute(self, query, params)
django.db.utils.IntegrityError: NOT NULL constraint failed: test_essai.ch2
>>> bouh.id
>>> bouh.ch1
'some content for ch1'
>>> bouh.ch2
>>>

Is this normal behavior? Did I miss something? Why is Django not raising an error as default behavior in this simple case?

Thanks for your lights!

EDIT

I got a few replies pointing out the fact that in SQL empty string "" is not equivalent to NULL, as stated in Django model blank=False does not work? However, if we look at ModelForm behavior, there seem to be a inconsistency in django doc.

see question Followup : missing required Charfield in django Modelform is saved as empty string and do not raise an error

Answer

Use this,

from django.db import modelsclass Essai(models.Model):ch1 = models.CharField(max_length=100)ch2 = models.CharField(max_length=100)
https://en.xdnf.cn/q/118043.html

Related Q&A

Beautiful soup missing some html table tags

Im trying to extract data from a website using beautiful soup to parse the html. Im currently trying to get the table data from the following webpage :link to webpageI want to get the data from the tab…

403 error Not Authorized to access this resource/api Google Admin SDK in web app even being admin

Im struggling to find the problem since two days without any idea why I get this error now even though the app was fully functional one month before.Among the tasks done by the web app, it makes an Adm…

Kivy - My ScrollView doesnt scroll

Im having problems in my Python application with Kivy library. In particular Im trying to create a scrollable list of elements in a TabbedPanelItem, but I dont know why my list doesnt scroll.Here is my…

How to get an associated model via a custom admin action in Django?

Part 2 of this question asked and answered separately.I have a Report and a ReportTemplate. +----+----------+---------------+-------------+ | id | title | data | template_id | +----+-------…

How can I use descriptors for non-static methods?

I am aware that I can use descriptors to change static property as if it were a normal property. However, when I try using descriptors for a normal class property, I end up changing the object it refer…

psycopg2 not all arguments converted during string formatting

I am trying to use psycopg2 to insert a row into a table from a python list, but having trouble with the string formatting.The table has 4 columns of types (1043-varchar, 1114-timestamp, 1043-varchar, …

inherited function odoo python

i want to inherit function in module hr_holidays that calculate remaining leaves the function is :hr_holiday.py:def _get_remaining_days(self, cr, uid, ids, name, args, context=None):cr.execute("&…

ValueError in pipeline - featureHasher not working?

I think Im having issues getting my vectorizer working within a gridsearch pipeline:data as panda df x_train:bathrooms bedrooms price building_id manager_id 10 1.5 3 3000 53a5b119b…

pandas dataframe: meaning of .index

I am trying to understand the meaning of the output of the following code:import pandas as pdindex = [index1,index2,index3] columns = [col1,col2,col3] df = pd.DataFrame([[1,2,3],[1,2,3],[1,2,3]], index…

Extract text inside XML tags with in Python (while avoiding p tags)

Im working with the NYT corpus in Python and attempting to extract only whats located inside "full_text" class of every .xml article file. For example: <body.content><block class=&qu…