from django.db import models
class Room(models.Model):
"""Room Model Definition"""
class RoomKindChoices(models.TextChoices):
ENTIRE_PLACE = ("entire_place", "Entire Place")
PRIVATE_ROOM = ("private_room", "Private Room")
SHARED_ROOM = "shared_room", "Shared Room"
country = models.CharField(
max_length=50,
default="한국",
)
city = models.CharField(
max_length=80,
default="서울",
)
price = models.PositiveIntegerField()
rooms = models.PositiveIntegerField()
toilets = models.PositiveIntegerField()
description = models.TextField()
address = models.CharField(max_length=250)
pet_friendly = models.BooleanField(default=True)
kind = models.CharField(
max_length=20,
choices=RoomKindChoices.choices,
)
owner = models.ForeignKey(
"users.User",
on_delete=models.CASCADE,
)
amenities = models.ManyToManyField("rooms.Amenity")
class Amenity(models.Model):
"""Amenity Definition"""
name = models.CharField(max_length=150)
description = models.CharField(
max_length=150,
null=True,
)
-> room과 amenity(생활 편의시설)
이것도 python manage.py startapp common 으로 만든거임
from django.db import models
class CommonModel(models.Model):
"""Common Model Definition"""
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
abstract = True
class Meta에 abstract = True를 넣으면 장고는 해당 클래스를 DB 테이블로 인식하지 않음
해당 코드를 상속받아 중복을 줄일 수 있음
앞으로 아래의 코드에는 created_at과 updated_at이 포함되어 DB에 반영됨
from django.db import models
from common.models import CommonModel
class Room(CommonModel):
"""Room Model Definition"""
class RoomKindChoices(models.TextChoices):
ENTIRE_PLACE = ("entire_place", "Entire Place")
PRIVATE_ROOM = ("private_room", "Private Room")
SHARED_ROOM = "shared_room", "Shared Room"
country = models.CharField(
max_length=50,
default="한국",
)
city = models.CharField(
max_length=80,
default="서울",
)
price = models.PositiveIntegerField()
rooms = models.PositiveIntegerField()
toilets = models.PositiveIntegerField()
description = models.TextField()
address = models.CharField(max_length=250)
pet_friendly = models.BooleanField(default=True)
kind = models.CharField(
max_length=20,
choices=RoomKindChoices.choices,
)
owner = models.ForeignKey(
"users.User",
on_delete=models.CASCADE,
)
amenities = models.ManyToManyField("rooms.Amenity")
class Amenity(CommonModel):
"""Amenity Definition"""
name = models.CharField(max_length=150)
description = models.CharField(
max_length=150,
null=True,
)
#관리자 패널 등록
#rooms/admin.py
from django.contrib import admin
from .models import Room, Amenity
@admin.register(Room)
class RoomAdmin(admin.ModelAdmin):
pass
@admin.register(Amenity)
class AmenityAdmin(admin.ModelAdmin):
pass
# Register your models here.