[Fixed]-Django how to make form fields optional


Presuming you want to make last_name optional, you can use the blank attribute:

class Student(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=40, blank=True)
    email = models.EmailField()

Note that on CharField and TextField, you probably don’t want to set null (see this answer for a discussion as to why), but on other field types, you’ll need to, or you’ll be unable to save instances where optional values are omitted.


You use the required argument, sent in with a False value:

email = models.EmailField(required=False)


If you want to allow blank values in a date field (e.g., DateField, TimeField, DateTimeField) or numeric field (e.g., IntegerField, DecimalField, FloatField), you’ll need to use both null=True and blank=True.


Use null=True and blank=True in your model.


class StudentForm(ModelForm):
    class Meta:
        model = Student
        exclude = ['first_name', ...]

Leave a comment