Study Anything ๐Ÿง

[Django] ๋ชจ๋ธ ๋งŒ๋“ค๊ณ  ํŽ˜์ด์ง€์—์„œ ์กฐํšŒํ•˜๊ธฐ ๋ณธ๋ฌธ

์Šคํ„ฐ๋””/Web

[Django] ๋ชจ๋ธ ๋งŒ๋“ค๊ณ  ํŽ˜์ด์ง€์—์„œ ์กฐํšŒํ•˜๊ธฐ

์†” 2022. 1. 13. 00:14

์ฐธ๊ณ : https://wikidocs.net/70650

 

 

์ด์ „ ๊ธ€์—์„œ ๋ชจ๋ธ์„ ๋งŒ๋“ค๊ณ  migrate ํ•ด์„œ ์•ฑ์— ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๊นŒ์ง€ ๋ฐฐ์› ๋‹ค.

์ด๊ฒƒ์„ ๋‚ด ํ”„๋กœ์ ํŠธ์— ์ ์šฉํ•ด์„œ ๋ชจ๋ธ์„ ๋งŒ๋“ค๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•˜๋Š” ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค์–ด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค.

 

 

(1) ๋ชจ๋ธ ๋งŒ๋“ค๊ธฐ (models.py ํŒŒ์ผ ์ž‘์„ฑ)

๋ชจ๋ธ > User ํ…Œ์ด๋ธ”

์†์„ฑ๋ช… ๋ฐ์ดํ„ฐํƒ€์ž…
userId (PK) int
userEmail varchar(30)
userPw varchar(20)
userName varchar(20)

 

๋ชจ๋ธ > Review ํ…Œ์ด๋ธ”

์†์„ฑ๋ช… ๋ฐ์ดํ„ฐํƒ€์ž…
reviewId (PK) int
userId (FK) int
bookId varchar(30)
reviewTxt text

๋‹ค์Œ์˜ ์†์„ฑ์„ ๊ฐ€์ง„ ์œ ์ € ํ…Œ์ด๋ธ”๊ณผ ์„œํ‰ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•œ๋‹ค.

class User(models.Model):
    userId = models.IntegerField(primary_key=True)
    userEmail = models.CharField(max_length=30)
    userPw = models.CharField(max_length=20)
    userName = models.CharField(max_length=20)

    # userId๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค
    def __int__(self):
        return self.userId

class Review(models.Model):
    userId = models.ForeignKey(User, on_delete=models.CASCADE)
    bookId = models.CharField(max_length=30)
    reviewId = models.IntegerField(primary_key=True)
    reviewTxt = models.TextField()

    # reviewId๋ฅผ ๊ธฐ๋ณธ์œผ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค
    def __int__(self):
        return self.reviewId

 

 

(2) urls.py ํŒŒ์ผ ์ˆ˜์ •

urlpatterns = [
    ...
    path('', views.list, name='list'),
    ...
]

์„œํ‰ ์•ฑ์˜ ๊ธฐ๋ณธ ๊ฒฝ๋กœ๋กœ ์ ‘์†ํ•˜๋ฉด ๋ฐ์ดํ„ฐ ๋ชฉ๋ก์„ ๋ณผ ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

 

 

(3) views.py ํŒŒ์ผ ์ˆ˜์ •

def list(request):
    review_list = Review.objects.order_by('-reviewId')
    context = {'review_list': review_list}
    return render(request, 'review/list.html', context)

reviewId์˜ ์—ญ์ˆœ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ ฌํ•ด ํŽ˜์ด์ง€์— ๋„์šฐ๋„๋ก ์กฐํšŒ ๊ณผ์ •์— order_by('-์†์„ฑ') ๋ฅผ ์ถ”๊ฐ€ํ–ˆ๋‹ค.

๋ชจ๋ธ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์™€ list.html ๋กœ ์ „๋‹ฌํ•œ๋‹ค. (context ์‚ฌ์šฉ)

 

 

(4) list.html ํŒŒ์ผ ์ž‘์„ฑ

{% if review_list %}
<ol>
{% for review in review_list %}
    <li><a href="/review/{{ review.reviewId }}/">
        <div>
            ์ œ๋ชฉ - Id: {{ review.reviewId }} <br>
            ์ฑ… ์ œ๋ชฉ - ISBN: {{ review.bookId }} <br>
            {{ review.reviewTxt }}
        </div>
    </a></li>
{% endfor %}
</ol>
{% else %}
    <p>์„œํ‰์ด ์—†์Šต๋‹ˆ๋‹ค.</p>
{% endif %}

์กฐ๊ฑด๋ฌธ์„ ํ†ตํ•ด ์ „๋‹ฌ๋ฐ›์€ review_list ๊ฐ€ ์žˆ๋Š”์ง€ ํŒ๋ณ„ํ•˜๊ณ  ์žˆ์œผ๋ฉด ๋ฐ์ดํ„ฐ ๋ชฉ๋ก์„ ๋„์šฐ๊ณ 

๋งŒ์•ฝ ์—†๋‹ค๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋‹ค๋Š” ๋ฌธ๊ตฌ๋ฅผ ๋„์šด๋‹ค.

 

 

์ด ๊ณผ์ •์„ ๊ฑฐ์น˜๋ฉด ๋‹ค์Œ์˜ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

๋ฐ์ดํ„ฐ ๋ชฉ๋ก ์กฐํšŒ ํŽ˜์ด์ง€

 

 

 

 

728x90
Comments