숙소에 대한 후기 기능을 추가할 것이다.
PROJECT_APPS = ["reviews.apps.ReviewsConfig",]
from core import models as models_core
class Review(models_core.TimeStampedModel):
"""Review Model Definition"""
preview = models.TextField()
cleanliness = models.IntegerField()
accuracy = models.IntegerField()
communication = models.IntegerField()
location = models.IntegerField()
check_in = models.IntegerField()
value = models.IntegerField()
user = models.ForeignKey("users.User", on_delete=models.CASCADE)
room = models.ForeignKey("rooms.Room", on_delete=models.CASCADE)
from django.contrib import admin
from . import models
@admin.register(models.Review)
class ReviewAdmin(admin.ModelAdmin):
"""Review Admin Definition"""
pass
migration
admin 패널
__str__ 메소드 추가
Review가 단순히 Object 1로 뜬다.
review - models.py - Review
def __str__(self):
self.review
ForeignKey에 해당하는 필드를 입력하면 이를 타고 들어가 해당 필드와 연과된 다른 정보도 불러올 수 있다.
return self.room.country
타고 들어간 필드에 또 다른 ForeignKey가 있다면 또 타고 들어갈 수 있다.
최종은 아래와 같이 한다.
return f"{self.review} - {self.room}"
> PROJECT_APPS = ["reservations.apps.ReservationsConfig",]
from django.db import models
from core import models as models_core
class Reservation(models_core.TimeStampedModel):
"""Reservation Model Definition"""
STATUS_PENDING = "pending"
STATUS_CONFIRMED = "confirmed"
STATUS_CANCELED = "canceled"
STATUS_CHOICES = (
(STATUS_PENDING, "Pending"),
(STATUS_CONFIRMED, "Confirmed"),
(STATUS_CANCELED, "Canceled"),
)
status = models.CharField(max_length=12, choices=STATUS_CHOICES, default=STATUS_PENDING)
check_in = models.DateField()
check_out = models.DateField()
guest = models.ForeignKey("users.User", on_delete=models.CASCADE)
room = models.ForeignKey("rooms.Room", on_delete=models.CASCADE)
from django.contrib import admins
from . import models
@admin.register(models.Reservation)
class ReservationAdmin(admin.ModelAdmin):
"""Reservation Admin Definition"""
pass
config - settings.py
1. lists 앱 설치
PROJECT_APPS = ["lists.apps.ListsConfig"]
from django.db import models
from core import models as models_core
class List(models_core.TimeStampedModel):
"""List Model Definition"""
name = models.CharField(max_length=80)
user = models.ForeignKey("users.User", on_delete=models.CASCADE)
rooms = models.ManyToManyField("rooms.Room", blank-True)
def __str__(self):
return self.name
from django.contrib import admin
from . import models
@admin.register(models.List)
class ListAdmin(admin.ModelAdmin):
"""List Admin Definition"""
pass
PROJECT_APPS = ['conversations.apps.ConversationsConfig"]
fromm djnago.db import models
from core import models as models_core
class Conversation(models_core.TimeStampedModel):
"""Conversation Model Definition"""
pasrticipants = models.ManyToManyField("users.User", blank=True)
def __str__(self):
return self.created
Message 클래스 추가
class Message(models_core.TimeStampedModel):
"Message Model Definition"""
message = models.TextField()
user = models.ForeignKey("users.User", on_delete=models.CASCADE)
conversation = models.ForeignKey("Conversation", on_delete=models.CASCADE)
def __str__(self):
return f"{self.user} says: {self.text}"
from django.contrib import admin
from . import models
@admin.register(models.Message)
class MessageAdmin(admin.ModelAdmin):
"""Message Admin Definition"""
pass
@admin.register(models.Conversation)
class ConversationAdmin(admin.ModelAdmin):
"""Conversation Admin Definition"""
pass
근데 Conversation을 생성하려니 에러가 났다.
아마 반환값이 str이 아니라서 그런것 같다.
Conversation 클래스의 반환값을 str로 변환해주자
def __str__(self):
return str(self.created)
됐당