Study Anything ๐ง
[Django] ๋ชจ๋ธ ๋ง๋ค๊ณ ํ์ด์ง์์ ์กฐํํ๊ธฐ ๋ณธ๋ฌธ
์ฐธ๊ณ : 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 ๊ฐ ์๋์ง ํ๋ณํ๊ณ ์์ผ๋ฉด ๋ฐ์ดํฐ ๋ชฉ๋ก์ ๋์ฐ๊ณ
๋ง์ฝ ์๋ค๋ฉด ๋ฐ์ดํฐ๊ฐ ์๋ค๋ ๋ฌธ๊ตฌ๋ฅผ ๋์ด๋ค.
์ด ๊ณผ์ ์ ๊ฑฐ์น๋ฉด ๋ค์์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋ค.
'์คํฐ๋ > Web' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Django] DRF : Serializer ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ, ์ ํจ์ฑ ๊ฒ์ฆ (0) | 2022.01.30 |
---|---|
[Django] DRF : REST API๋ฅผ ํตํด ์ฅ๊ณ ์ ๋ฆฌ์กํธ ์ฐ๊ฒฐํ๊ธฐ (0) | 2022.01.29 |
[Django] DRF : ์ฅ๊ณ ๋ชจ๋ธ์ json ๊ฐ์ฒด๋ก ์ถ์ถํ๊ธฐ (0) | 2022.01.19 |
[Django] ๊ธฐ๋ณธ ๊ฐ๋ (์ฑ, ๋ชจ๋ธ, ๊ด๋ฆฌ์) (0) | 2022.01.06 |
[Django] ๊ฐ๋ฐํ๊ฒฝ ๊ตฌ์ถํ๊ธฐ (0) | 2022.01.05 |