将可选的Django字段设置为空白的正确方法?

时间:2016-11-02 19:51:57

标签: django django-models django-forms

如果你有一个可选的Django模型字段,当用户将表单字段留空时,创建该Django对象的正确方法是什么?我有以下模型和形式(顺便说一下,我知道我可以使用ModelForm):

# models.py
class Club(models.Model):
    hostname = models.CharField(max_length=128)
    co_hostname = models.CharField(max_length=128, null=True, blank=True)

# forms.py
class ClubForm(forms.Form):
    hostname = models.CharField(max_length=128)
    co_hostname = models.CharField(max_length=128, required=False)

如果用户将共同主持人字段留空,我是否应该在创建对象时输入如下所示的空白?我一直认为,如果你在数据库表中插入一个空白,你仍然会给它一个你可能不想做的值。处理这种情况的正确方法是什么?感谢。

# views.py
club = Club.objects.create(
    hostname = form.cleaned_data['hostname'],
    co_hostname = ''
    )

1 个答案:

答案 0 :(得分:0)

您可以将None作为字段值,因为您的字段的属性null设置为True

所以你可以:

club = Club.objects.create(hostname=form.cleaned_data['hostname'], co_hostname=None)

为了让您的生活更轻松,我还建议您为表单使用ModelForm,因为您要将模型中完全相同的字段复制到表单中。