Django 기본 양식 값 설정
모델 필드 기본값 설정
모델 필드에 default
속성을 사용하여 기본값을 설정할 수 있습니다. 예를 들어 다음과 같이 모델을 정의할 수 있습니다.
class MyModel(models.Model):
name = models.CharField(max_length=255, default="John Doe")
email = models.EmailField(default="[email protected]")
이 경우 MyModel
인스턴스를 생성할 때 name
필드는 "John Doe"로, email
필드는 "[email protected]"으로 설정됩니다.
양식 위젯 속성 설정
from django.forms import ModelForm
class MyModelForm(ModelForm):
class Meta:
model = MyModel
def my_view(request):
form = MyModelForm(initial={'name': "Jane Doe"})
return render(request, 'my_template.html', {'form': form})
이 경우 MyModelForm
인스턴스를 생성할 때 name
필드는 "Jane Doe"로 설정됩니다.
양식 헬퍼 함수 사용
Django는 기본 양식 값을 설정하는 데 사용할 수 있는 여러 가지 헬퍼 함수를 제공합니다. 예를 들어 다음과 같이 뷰를 정의할 수 있습니다.
from django.forms import model_to_dict
def my_view(request):
initial_data = model_to_dict(MyModel.objects.get(pk=1))
form = MyModelForm(initial=initial_data)
return render(request, 'my_template.html', {'form': form})
이 경우 MyModelForm
인스턴스를 생성할 때 initial_data
딕셔너리에 있는 값으로 필드가 설정됩니다.
사용자 지정 뷰 로직 사용
def my_view(request):
if request.method == "POST":
form = MyModelForm(request.POST)
if form.is_valid():
# ...
else:
form = MyModelForm(initial={'name': request.user.username})
return render(request, 'my_template.html', {'form': form})
추가 정보
예제 코드
모델 필드 기본값 설정
class MyModel(models.Model):
name = models.CharField(max_length=255, default="John Doe")
email = models.EmailField(default="[email protected]")
이 코드는 name
필드의 기본값을 "John Doe", email
필드의 기본값을 "[email protected]"으로 설정합니다.
양식 위젯 속성 설정
from django.forms import ModelForm
class MyModelForm(ModelForm):
class Meta:
model = MyModel
def my_view(request):
form = MyModelForm(initial={'name': "Jane Doe"})
return render(request, 'my_template.html', {'form': form})
양식 헬퍼 함수 사용
from django.forms import model_to_dict
def my_view(request):
initial_data = model_to_dict(MyModel.objects.get(pk=1))
form = MyModelForm(initial=initial_data)
return render(request, 'my_template.html', {'form': form})
이 코드는 MyModelForm
인스턴스를 생성할 때 MyModel
인스턴스의 데이터로 필드를 설정합니다.
사용자 지정 뷰 로직 사용
def my_view(request):
if request.method == "POST":
form = MyModelForm(request.POST)
if form.is_valid():
# ...
else:
form = MyModelForm(initial={'name': request.user.username})
return render(request, 'my_template.html', {'form': form})
실행 방법
이 코드를 실행하려면 다음 단계를 수행하십시오.
- Django 프로젝트를 만듭니다.
- 위 코드를
models.py
및views.py
파일에 저장합니다. urls.py
파일에서views.py
파일의 뷰를 연결합니다.- Django 서버를 실행합니다.
- 브라우저에서 뷰에 연결된 URL로 이동합니다.
참고
Django 기본 양식 값 설정 대체 방법
모델 메타 클래스 사용
class MyModel(models.Model):
name = models.CharField(max_length=255)
email = models.EmailField()
class Meta:
default_values = {
'name': "John Doe",
'email': "[email protected]",
}
양식 팩토리 사용
from django.forms import modelform_factory
MyModelForm = modelform_factory(MyModel, initial={'name': "Jane Doe"})
양식 믹신 사용
from django.forms import FormMixin
class InitialValuesMixin(FormMixin):
def get_initial(self):
initial = super().get_initial()
initial.update({'name': "John Doe"})
return initial
class MyModelForm(InitialValuesMixin, modelform_factory(MyModel)):
pass
추가 정보
선택 방법
사용할 방법은 상황에 따라 다릅니다. 다음은 몇 가지 고려 사항입니다.
- 간편함: 가장 간단한 방법은 모델 필드 기본값 설정입니다.
- 유연성: 양식 위젯 속성 설정 또는 양식 헬퍼 함수 사용은 더 많은 유연성을 제공합니다.
- 재사용성: 모델 메타 클래스, 양식 팩토리 또는 양식 믹신을 사용하면 코드를 재사용할 수 있습니다.
python django django-models