web-dev-qa-db-ja.com

Djangoモデルのオプションフィールド

Djangoには次のモデルがあります。

class Link(models.Model):
    name = models.CharField(max_length=100)
    url = models.CharField(max_length=100)
    tag = models.CharField(max_length=100)

    def __unicode__(self):
        return self.name

オプションのurlフィールドが必要です。どうすればよいですか?

25
eatonphil

属性を追加 blank=True 。オプションで、 null=True

49
mipadi

Django docsからわかるように、CharFieldに_null=True_を設定することはお勧めしません:

CharFieldやTextFieldなどの文字列ベースのフィールドではnullを使用しないでください。文字列ベースのフィールドにnull = Trueがある場合、それは「データなし」に2つの可能な値があることを意味します。NULLと空の文字列です。ほとんどの場合、「データなし」の値として2つの値を持つことは冗長です。 Django規則は、NULLではなく空の文字列を使用することです。1つの例外は、CharFieldにunique = Trueとblank = Trueの両方が設定されている場合です。この状況では、回避するためにnull = Trueが必要です。空白の値を持つ複数のオブジェクトを保存するときの一意の制約違反。

だから私はこの構成をお勧めします:

name = models.CharField(max_length=100, blank=True, default='')

20
Adam