๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Programming/Django

[Django] ModelForm์œผ๋กœ ํผ์„ ๊ฐ„๋‹จํžˆ! ๊ทธ๋Ÿฐ๋ฐ ๋ ˆ์ด๋ธ”์„ ์žƒ์—ˆ๋‹ค...

by Mandy's 2025. 7. 24.

๐Ÿงฉ ์ƒํ™ฉ

Django์—์„œ ์‚ฌ์šฉ์ž ์ž…๋ ฅ ํผ์„ ๋งŒ๋“ค ๋•Œ forms.Form์„ ์“ฐ๋ฉด ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋‚˜ ํ•„๋“œ ๊ตฌ์„ฑ์ด ๋ฒˆ๊ฑฐ๋กœ์›Œ์š”. ๊ทธ๋ž˜์„œ forms.ModelForm์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋ธ ๊ธฐ๋ฐ˜์œผ๋กœ ํผ์„ ์ž๋™ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์–ด์„œ ๋งค์šฐ ๊ฐ„ํŽธํ•ฉ๋‹ˆ๋‹ค.

class ReviewForm(forms.ModelForm):
    class Meta:
        model = Review
        fields = "__all__"

์œ„์™€ ๊ฐ™์ด ์“ฐ๋ฉด Review ๋ชจ๋ธ์˜ ๋ชจ๋“  ํ•„๋“œ๋ฅผ ์ž๋™์œผ๋กœ ํผ์œผ๋กœ ์ƒ์„ฑํ•ด์ค๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฌธ์ œ๋Š”...

โ— ๋ ˆ์ด๋ธ”(label)์ด ๋‹ค ์˜์–ด ๋ณ€์ˆ˜๋ช…์œผ๋กœ ๋‚˜์™€์š”!

๋ณ€์ˆ˜ ๋ช…์ด ์ด์ƒํ•˜๋‹ค..? ๊ณ ์œ ์˜ ๊ฐ’์œผ๋กœ ๋‚˜์˜ด

๐Ÿ” ์›์ธ

ModelForm์€ Model ํด๋ž˜์Šค์— ์ •์˜๋œ ํ•„๋“œ ์ด๋ฆ„์„ ๊ทธ๋Œ€๋กœ label๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. verbose_name์„ ๋ชจ๋ธ์—์„œ ์ •์˜ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ณ€์ˆ˜๋ช…์„ ๊ทธ๋Œ€๋กœ ์ถœ๋ ฅํ•˜์ฃ .

๐Ÿ›  ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•: labels์™€ error_messages ์„ค์ •

์•„๋ž˜์ฒ˜๋Ÿผ Meta ํด๋ž˜์Šค ์•ˆ์— labels์™€ error_messages๋ฅผ ์ง€์ •ํ•ด์ฃผ๋ฉด forms.Form ๋ชป์ง€์•Š๊ฒŒ ์นœ์ ˆํ•œ UI์™€ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ์–ด์š”.

class ReviewForm(forms.ModelForm):
    class Meta:
        model = Review
        fields = "__all__"

        labels = {
            "user_name": "Your Name",
            "review_text": "Your Feedback",
            "rating": "Your Rating"
        }

        error_messages = {
            "user_name": {
                "required": "Your name must not be empty!",
                "max_length": "Please enter a shorter name!"
            }
        }

โœ… ๊ฒฐ๊ณผ

๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๋ณ€์ˆ˜๋ช…์œผ๋กœ ์„ค์ • ๊ฐ€๋Šฅ!

  • ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์ด๋Š” ๋ ˆ์ด๋ธ”์„ ์นœ์ ˆํ•˜๊ฒŒ ์ง€์ • ๊ฐ€๋Šฅ
  • required ์กฐ๊ฑด ์œ„๋ฐ˜ ์‹œ ์‚ฌ์šฉ์ž ์นœํ™”์ ์ธ ๋ฉ”์‹œ์ง€ ์ œ๊ณต

๐Ÿ”– ์š”์•ฝ

ํ•ญ๋ชฉ ๋ฐฉ๋ฒ•

๋ชจ๋ธ ๊ธฐ๋ฐ˜ ํผ ์ƒ์„ฑ forms.ModelForm
๋ ˆ์ด๋ธ” ์ง€์ • Meta.labels
์—๋Ÿฌ ๋ฉ”์‹œ์ง€ ์ง€์ • Meta.error_messages

๐Ÿท ์ถ”์ฒœ ํƒœ๊ทธ

#Django #ModelForm #FormValidation #PythonWebDev #์›น๊ฐœ๋ฐœ๊ธฐ์ดˆ