【问题标题】:Django how to make form fields optionalDjango如何使表单字段可选
【发布时间】:2014-06-09 17:29:21
【问题描述】:

在 django 中如何使表单字段可选?

我的模特,

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

【问题讨论】:

标签: python django


【解决方案1】:

您使用required 参数,并带有False 值:

email = models.EmailField(required=False)

【讨论】:

    【解决方案2】:
    class StudentForm(ModelForm):
        class Meta:
            model = Student
            exclude = ['first_name', ...]
    

    【讨论】:

    • 这不会使表单字段成为可选字段,只是根本不显示在表单中。
    • @ChrisWesseling 是的,这就是我认为 OP 想要做的事情。
    【解决方案3】:

    如果您想在日期字段(例如,DateFieldTimeFieldDateTimeField)或数字字段(例如,IntegerFieldDecimalFieldFloatField)中允许空白值,您'需要同时使用null=Trueblank=True

    【讨论】:

      【解决方案4】:

      在您的模型中使用 null=Trueblank=True

      【讨论】:

        【解决方案5】:

        假设您想让last_name 可选,您可以使用blank 属性:

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

        请注意,在 CharFieldTextField 上,您可能不想设置 null(有关原因的讨论,请参阅 this answer),但在其他字段类型上,您需要,否则您将无法保存省略了可选值的实例。

        【讨论】:

          猜你喜欢
          • 2015-10-10
          • 1970-01-01
          • 1970-01-01
          • 2018-11-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-12-22
          • 2019-03-09
          相关资源
          最近更新 更多