CharField
has been made nullable here, making it inconsistent 9# Create your models here.
10class Groups(models.Model):
11 user = models.ForeignKey(NewUserResgistration, on_delete=models.CASCADE, null=True)
12 name = models.CharField(max_length=200, null=True)13
14 def __str__(self):
15 return self.name
CharField
has been made nullable here, making it inconsistent18class GroupDetails(models.Model):
19 GENDER = (("Male", "Male"), ("Female", "Female"), ("Others", "Others"))
20 group = models.ForeignKey(Groups, on_delete=models.CASCADE, null=True)
21 email = models.CharField(max_length=200, null=True)22 name = models.CharField(max_length=200, null=True)
23 gender = models.CharField(max_length=200, choices=GENDER, blank=False, null=True)
24
CharField
has been made nullable here, making it inconsistent19 GENDER = (("Male", "Male"), ("Female", "Female"), ("Others", "Others"))
20 group = models.ForeignKey(Groups, on_delete=models.CASCADE, null=True)
21 email = models.CharField(max_length=200, null=True)
22 name = models.CharField(max_length=200, null=True)23 gender = models.CharField(max_length=200, choices=GENDER, blank=False, null=True)
24
25 def __str__(self):
CharField
has been made nullable here, making it inconsistent20 group = models.ForeignKey(Groups, on_delete=models.CASCADE, null=True)
21 email = models.CharField(max_length=200, null=True)
22 name = models.CharField(max_length=200, null=True)
23 gender = models.CharField(max_length=200, choices=GENDER, blank=False, null=True)24
25 def __str__(self):
26 return str(self.name) + "-" + str(self.email)
CharField
has been made nullable here, making it inconsistent46
47class SentMail(models.Model):
48 user = models.ForeignKey(NewUserResgistration, on_delete=models.CASCADE)
49 title = models.CharField(max_length=200, null=True, blank=True)50 _from = models.CharField(max_length=200, null=True, blank=True)
51 _group = models.CharField(max_length=200, null=True, blank=True)
52 _company = models.CharField(max_length=200, null=True, blank=True)
The null
attribute specifies that the field can be None
, or null
at database level.
This makes the ORM queries and the Python code more complex because the values will sometime be None
and other times, a string
.
Hence, you'd need extra code to check on performing string operations on a NoneType
.
It is recommended to provide a default=''
option to the fields instead.
This way, you wonn't have to worry about null values and the database would also throw an exception if there is an attempt to explicitly save None
.
class Customer(models.Model):
remarks = models.CharField(null=True)
query = Q(remarks__isnull=True) | Q(remarks='')
for customer in Customer.objects.filter(query):
...
class Customer(models.Model):
remarks = models.CharField(default='')
for customer in Customer.objects.filter(remarks=''):
# customer.remarks is always a str
...