如果不创建表单,是否可以使Django中不需要的管理字段?


80

每次我在Django的Admin部分中输入新播放器时,都会收到一条错误消息,提示“此字段为必填字段。”。

有没有一种方法可以使不需要创建自定义表单的字段成为必填字段?我可以在models.py或admin.py中执行此操作吗?

这是我在models.py中的类的样子。

class PlayerStat(models.Model):
    player = models.ForeignKey(Player)

    rushing_attempts = models.CharField(
        max_length = 100,
        verbose_name = "Rushing Attempts"
        )
    rushing_yards = models.CharField(
        max_length = 100,
        verbose_name = "Rushing Yards"
        )
    rushing_touchdowns = models.CharField(
        max_length = 100,
        verbose_name = "Rushing Touchdowns"
        )
    passing_attempts = models.CharField(
        max_length = 100,
        verbose_name = "Passing Attempts"
        )

谢谢


4
最简单的方法是使用字段选项blank = True(docs.djangoproject.com/en/dev/ref/models/fields/#blank)。有什么理由不起作用吗?
白金Azure

Answers:


158

刚放

blank=True

在您的模型中,即:

rushing_attempts = models.CharField(
        max_length = 100,
        verbose_name = "Rushing Attempts",
        blank=True
        )

请注意,如果您使用“ forms”,则blank = true将不起作用。例如,这里的模型中的blank = true将不起作用:类MusModelForm(forms.ModelForm):名称= forms.CharField(widget = forms.Textarea)#〜mitglieder = forms.CharField(widget = forms.Textarea)类Meta:模型=音乐家
蒂莫(Timo)2014年

6

使用blank = True,null = True

class PlayerStat(models.Model):
    player = models.ForeignKey(Player)

    rushing_attempts = models.CharField(
        max_length = 100,
        verbose_name = "Rushing Attempts",
        blank=True,
        null=True
        )
    rushing_yards = models.CharField(
        max_length = 100,
        verbose_name = "Rushing Yards",
        blank=True,
        null=True
        )
    rushing_touchdowns = models.CharField(
        max_length = 100,
        verbose_name = "Rushing Touchdowns",
        blank=True,
        null=True
        )
    passing_attempts = models.CharField(
        max_length = 100,
        verbose_name = "Passing Attempts",
        blank=True,
        null=True
        )

3
至少从Django 1.6开始,甚至在更早的时候,也不需要在CharFields上使用“ null = True”。同样,对于TextField,SlugField,EmailField,...存储为文本的任何内容。
jenniwren's

对于严格包含文本的字段,Django不建议使用“ null = True”。
kas 2016年

这是完整的答案。感谢您的发布。
Siraj Alam

1
@Paullo“避免在基于字符串的字段(例如CharField和TextField)上使用null。如果基于字符串的字段具有null = True,则意味着它对于“无数据”具有两个可能的值:NULL和空字符串。在大多数情况下在这种情况下,为“无数据”使用两个可能的值是多余的;Django惯例是使用空字符串,而不是NULL。一个例外是当CharField同时设置了unique = True和blank = True时,在这种情况下,为null时需要使用null = True来避免唯一约束的冲突。价值观。” docs.djangoproject.com/en/2.1/ref/models/fields/#null
Massood Khaari

1
@MassoodKhaari我明白您的意思,我也同意“理性是不令人信服的”。
Paullo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.