๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • What would life be If we had no courage to attemp anything?
๐“๐จ๐๐š๐ฒ ๐ˆ ๐‹๐ž๐š๐ซ๐ง

๐“๐จ๐๐š๐ฒ ๐ˆ ๐‹๐ž๐š๐ซ๐ง 2022.04.18.์›”

by DevIseo 2022. 4. 18.

Today I Learn 220418

์˜ค๋Š˜์€ DB 1:N๊ด€๊ณ„์™€ ๊ด€๋ จํ•˜์—ฌ todo app์„ ์žฅ๊ณ ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ์›Œํฌ์ƒต์„ ํ–ˆ๋‹ค. ์˜ค๋Š˜๋„ ์–ด๊น€์—†์ด ์˜ค๋ฅ˜์™€ ์‹ธ์› ๋‹ค.

์ฒ˜์Œ์— migration์ด ์•ˆ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ ์ด๊ฒŒ ๊ณ„์† ์ด์–ด์ง€๋ฉด์„œ ์„œ๋ฒ„๊นŒ์ง€ ์ผœ์ง€์ง€ ์•Š์•„์„œ ๊ฒฐ๊ตญ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ๋งŒ๋“ค์—ˆ๋‹ค.

๋‹ค์‹œ ์˜ค๋ฅ˜๋ฅผ ๋˜์งš์–ด๋ณด๋ฉด settings.py์— AUTH_USER_MODEL = 'accounts.User'๋ฅผ ์ ์–ด๋‘๊ณ  accounts์˜ model๊ณผ form์„ ์ œ๋Œ€๋กœ ์ž‘์„ฑํ•˜์ง€ ์•Š์•„์„œ attribute ์—๋Ÿฌ๊ฐ€ ๋œฌ ๊ฑฐ์˜€๋‹ค.

๋˜ ํ•œ๋ฒˆ์— ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋ ค๋‹ค๊ฐ€ ๋‚ด๊ฐ€ ๋†“์นœ ๋ถ€๋ถ„๋“ค์ด ์ƒ๊ฒผ๋˜ ๊ฑฐ ๊ฐ™์•˜๋‹ค. ๊ทธ๋ž˜์„œ ๋‹ค์‹œ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋งŒ๋“ค ๋•Œ๋Š” ๊ณผ์ • ํ•˜๋‚˜ํ•˜๋‚˜ ๋‹ค์‹œ ๋˜์งš์–ด๊ฐ€๋ฉฐ ๋งŒ๋“ค์–ด๋ณด๋ ค๊ณ  ๋…ธ๋ ฅํ–ˆ๋‹ค.

๊ทธ๋žฌ๋”๋‹ˆ ์‚ฌ์†Œํ•œ ์˜ค๋ฅ˜๋“ค๋งŒ ๋งŒ๋‚˜๊ณ  ๋Œ€์ฒด์ ์œผ๋กœ ๊ดœ์ฐฎ๊ฒŒ ํ˜๋Ÿฌ๊ฐ”๋‹ค. ๊ทธ๋Ÿฌ๋‹ค๊ฐ€ Integerity Error๋ฅผ ๋งŒ๋‚ฌ๋Š”๋ฐ, ์ด ๋ถ€๋ถ„์€ ๋‹ค์Œ์—์„œ ๋‚˜ํƒ€๋‚ฌ๋‹ค.

๋‚ด๊ฐ€ ๋งŒ๋“  todos ์•ฑ์˜ models.py์—์„œ

from django.db import models
from django.conf import settings

# Create your models here.
class Todos(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE)
    title = models.TextField()
    completed = models.BooleanField()
    author = models.IntegerField(null=True) #์—ฌ๊ธฐ๊ฐ€ ๋น„์–ด์žˆ์—ˆ๋Š”๋ฐ null=True๋ฅผ ํ†ตํ•ด ํ•ด๊ฒฐ!

    def __str__(self):
        return self.title

class Todos์˜ author์—์„œ ์ผ์–ด๋‚œ ๋ฌธ์ œ์˜€๋‹ค.

๊ทธ๋ž˜์„œ ๊ตฌ๊ธ€๋ง์„ ํ†ตํ•ด author = models.IntegerField(null=True)๋กœ ์„ค์ •ํ•˜์—ฌ ๋ฌธ์ œ ์—†์ด ํŽ˜์ด์ง€๊ฐ€ ๊ตฌํ˜„๋˜์—ˆ๋‹ค.

์•„์ง๋„ ๋ถ€์กฑํ•œ ์ ์ด ๋งŽ์ง€๋งŒ ์˜ˆ์ „๋ณด๋‹ค ์˜ค๋ฅ˜๋ฅผ ๋ณด๋ฉด ๋œ ๋‹นํ™ฉํ•œ๋‹ค๋Š” ์ ์—์„œ ๋งŽ์ด ๋ฐœ์ „ํ•˜๊ณ  ์žˆ๋Š” ๊ฑฐ ๊ฐ™๋‹ค.

์•ž์œผ๋กœ๋„ ๋” ์—ด์‹ฌํžˆ ๋…ธ๋ ฅํ•ด์•ผ๊ฒ ๋‹ค.

๋Œ“๊ธ€