null=Trueとは
null=Trueは、Djangoのモデルフィールドで使用されるパラメータです。この設定がTrueに設定されている場合、データベースの該当フィールドはNULL値を受け入れることができます。これは、フィールドが値を持たない場合でもデータベースにレコードを保存できることを意味します。主にデータベースレベルでの設定です。
サンプルコード1: null=Trueを使用したモデルの定義
from django.db import models class Profile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) biography = models.TextField(null=True) # NULL値を許容
サンプルコード2: データベースにNULL値を保存
# Profileインスタンスを作成し、biographyフィールドにNULLを設定 profile = Profile(user=some_user) profile.save() # biographyはNULLとして保存される
サンプルコード3: NULL値を持つフィールドのクエリ
# biographyがNULLのすべてのProfileを取得 null_profiles = Profile.objects.filter(biography__isnull=True)
blank=Trueとは
blank=Trueは、フォームを通じてデータが入力される際に、フィールドが空白であることを許容するかどうかを定義します。これは主にフォームのバリデーションに影響を与え、ユーザーインターフェースレベルでの設定です。blank=Falseの場合、フィールドはフォームから送信される際に必ず値を持っている必要があります。
サンプルコード1: blank=Trueを使用したモデルの定義
from django.db import models class Application(models.Model): name = models.CharField(max_length=100) comment = models.TextField(blank=True) # フォームでの空白を許容
サンプルコード2: 空白値を含むフォームの処理
# Applicationフォームを使い、commentが空白のデータを保存 form = ApplicationForm(data={'name': 'Alice', 'comment': ''}) if form.is_valid(): form.save() # commentは空白として保存される
サンプルコード3: 空白値を許容するフィールドのクエリ
# commentが空白のすべてのApplicationを取得 empty_comment_apps = Application.objects.filter(comment="")
null=Trueとblank=Trueは、それぞれ異なるレベル(データベースレベルとフォームレベル)での設定を提供するため、適切に使用することが重要です。特に、どのフィールドがユーザーによって空白で提出されることが許されるか(blank=True)、また、どのフィールドがデータベースでNULLとして保存されることが許されるか(null=True)を理解することが重要です。