Djangoã®ã¢ãã«ç¶æ¿ã«ã€ããŠãæœè±¡åºåºã¯ã©ã¹ãšå€å¯ŸããŒãã«ç¶æ¿ãç¶²çŸ ããå æ¬çã¬ã€ããå®çšäŸãããŒã¿ããŒã¹èšèšäžã®èæ ®ç¹ã解説ããŸãã
Djangoã¢ãã«ã®ç¶æ¿: æœè±¡åºåºã¯ã©ã¹ vs. å€å¯ŸããŒãã«ç¶æ¿
Djangoã®ãªããžã§ã¯ããªã¬ãŒã·ã§ãã«ããããŒïŒORMïŒã¯ãããŒã¿ã®ã¢ããªã³ã°ãšããŒã¿ããŒã¹ãšã®å¯Ÿè©±ã«ãããŠåŒ·åãªæ©èœãæäŸããŸããDjangoã«ãããå¹ççãªããŒã¿ããŒã¹èšèšã®éèŠãªåŽé¢ã®äžã€ã¯ãã¢ãã«ã®ç¶æ¿ãçè§£ãæŽ»çšããããšã§ããããã«ãããè€æ°ã®ã¢ãã«éã§å ±éã®ãã£ãŒã«ããæ¯ãèããåå©çšã§ããã³ãŒãã®éè€ãæžãããä¿å®æ§ãåäžãããããšãã§ããŸããDjangoã¯äž»ã«2çš®é¡ã®ã¢ãã«ç¶æ¿ãæäŸããŠããŸããæœè±¡åºåºã¯ã©ã¹ãšå€å¯ŸããŒãã«ç¶æ¿ã§ããããããã®ã¢ãããŒãã«ã¯ç¬èªã®ãŠãŒã¹ã±ãŒã¹ããããããŒã¿ããŒã¹æ§é ãã¯ãšãªã®ããã©ãŒãã³ã¹ã«åœ±é¿ãäžããŸãããã®èšäºã§ã¯ãäž¡æ¹ãå æ¬çã«æ¢æ±ããããããã®ã¿ã€ãããã€äœ¿çšããã©ã®ããã«å¹æçã«å®è£ ããããã¬ã€ãããŸãã
ã¢ãã«ç¶æ¿ãçè§£ãã
ã¢ãã«ç¶æ¿ã¯ãªããžã§ã¯ãæåããã°ã©ãã³ã°ã®åºæ¬æŠå¿µã§ãããæ¢åã®ã¯ã©ã¹ïŒDjangoã§ã¯ã¢ãã«ïŒãåºã«æ°ããã¯ã©ã¹ãäœæããããšãã§ããŸããæ°ããã¯ã©ã¹ã¯èŠªã¯ã©ã¹ã®å±æ§ãšã¡ãœãããç¶æ¿ããã³ãŒããæžãçŽãããšãªãèŠªã®æ¯ãèããæ¡åŒµãŸãã¯ç¹åãããããšãã§ããŸããDjangoã§ã¯ãã¢ãã«ç¶æ¿ã¯è€æ°ã®ã¢ãã«éã§ãã£ãŒã«ããã¡ãœãããããã³ã¡ã¿ãªãã·ã§ã³ãå ±æããããã«äœ¿çšãããŸãã
é©åãªç¶æ¿ã¿ã€ããéžæããããšã¯ãããæ§é åãããå¹ççãªããŒã¿ããŒã¹ãæ§ç¯ããããã«äžå¯æ¬ ã§ããç¶æ¿ã®äžé©åãªäœ¿çšã¯ãããã©ãŒãã³ã¹ã®åé¡ãè€éãªããŒã¿ããŒã¹ã¹ããŒãã«ã€ãªããå¯èœæ§ããããŸãããããã£ãŠãåã¢ãããŒãã®ãã¥ã¢ã³ã¹ãçè§£ããããšãéèŠã§ãã
æœè±¡åºåºã¯ã©ã¹
æœè±¡åºåºã¯ã©ã¹ãšã¯ïŒ
æœè±¡åºåºã¯ã©ã¹ã¯ãç¶æ¿ãããããšãæå³ããŠèšèšãããã¢ãã«ã§ãããçŽæ¥ã€ã³ã¹ã¿ã³ã¹åãããããšã¯ãããŸããããããã¯ä»ã®ã¢ãã«ã®èšèšå³ãšããŠæ©èœãããã¹ãŠã®åã¢ãã«ã«ååšããã¹ãå
±éã®ãã£ãŒã«ããšã¡ãœãããå®çŸ©ããŸããDjangoã§ã¯ãã¢ãã«ã®Metaã¯ã©ã¹ã®abstract屿§ãTrueã«èšå®ããããšã§æœè±¡åºåºã¯ã©ã¹ãå®çŸ©ããŸãã
ã¢ãã«ãæœè±¡åºåºã¯ã©ã¹ããç¶æ¿ãããšãDjangoã¯æœè±¡åºåºã¯ã©ã¹ã§å®çŸ©ããããã¹ãŠã®ãã£ãŒã«ããšã¡ãœãããåã¢ãã«ã«ã³ããŒããŸããããããæœè±¡åºåºã¯ã©ã¹èªäœã¯ããŒã¿ããŒã¹ã«å¥ã®ããŒãã«ãšããŠäœæãããŸãããããã¯å€å¯ŸããŒãã«ç¶æ¿ãšã®éèŠãªéãã§ãã
æœè±¡åºåºã¯ã©ã¹ã䜿çšããå Žé¢
æœè±¡åºåºã¯ã©ã¹ã¯ãè€æ°ã®ã¢ãã«ã«å«ãããå ±éã®ãã£ãŒã«ãã»ãããããããæœè±¡åºåºã¯ã©ã¹èªäœãçŽæ¥ã¯ãšãªããå¿ èŠããªãå Žåã«çæ³çã§ããäžè¬çãªãŠãŒã¹ã±ãŒã¹ã«ã¯ä»¥äžã®ãããªãã®ããããŸãïŒ
- ã¿ã€ã ã¹ã¿ã³ãä»ãã¢ãã«: è€æ°ã®ã¢ãã«ã«
created_atãšupdated_atãã£ãŒã«ãã远å ããã - ãŠãŒã¶ãŒé¢é£ã¢ãã«: ç¹å®ã®ãŠãŒã¶ãŒã«é¢é£ä»ããããã¢ãã«ã«
userãã£ãŒã«ãã远å ããã - ã¡ã¿ããŒã¿ã¢ãã«: SEOç®çã§
titleãdescriptionãkeywordsã®ãããªãã£ãŒã«ãã远å ããã
æœè±¡åºåºã¯ã©ã¹ã®äŸ
ã¿ã€ã ã¹ã¿ã³ãä»ãã¢ãã«ã®æœè±¡åºåºã¯ã©ã¹ã®äŸãäœæããŠã¿ãŸãããïŒ
from django.db import models
class TimeStampedModel(models.Model):
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
abstract = True
class Article(TimeStampedModel):
title = models.CharField(max_length=200)
content = models.TextField()
def __str__(self):
return self.title
class Comment(TimeStampedModel):
article = models.ForeignKey(Article, on_delete=models.CASCADE)
text = models.TextField()
def __str__(self):
return self.text
ãã®äŸã§ã¯ãTimeStampedModelã¯created_atãšupdated_atãã£ãŒã«ããæã€æœè±¡åºåºã¯ã©ã¹ã§ããArticleãšCommentã®äž¡ã¢ãã«ã¯TimeStampedModelãç¶æ¿ãããããã®ãã£ãŒã«ããèªåçã«ååŸããŸããpython manage.py migrateãå®è¡ãããšãDjangoã¯ArticleãšCommentãšãã2ã€ã®ããŒãã«ãäœæããããããã«created_atãšupdated_atãã£ãŒã«ããå«ãŸããŸãã`TimeStampedModel`èªäœã®ããŒãã«ã¯äœæãããŸããã
æœè±¡åºåºã¯ã©ã¹ã®å©ç¹
- ã³ãŒãã®åå©çšæ§: è€æ°ã®ã¢ãã«éã§å ±éã®ãã£ãŒã«ããã¡ãœããã®éè€ãé¿ããã
- ç°¡æœãªããŒã¿ããŒã¹ã¹ããŒã: æœè±¡åºåºã¯ã©ã¹èªäœã¯ããŒãã«ã§ã¯ãªããããããŒã¿ããŒã¹å ã®ããŒãã«æ°ãæžããã
- ä¿å®æ§ã®åäž: æœè±¡åºåºã¯ã©ã¹ãžã®å€æŽããã¹ãŠã®åã¢ãã«ã«èªåçã«åæ ãããã
æœè±¡åºåºã¯ã©ã¹ã®æ¬ ç¹
- çŽæ¥ã¯ãšãªäžå¯: æœè±¡åºåºã¯ã©ã¹ãçŽæ¥ã¯ãšãªããããšã¯ã§ããŸãããåã¢ãã«ã®ã¿ã¯ãšãªå¯èœã§ãã
- éå®çãªããªã¢ãŒãã£ãºã : åäžã®ã¯ãšãªã§æœè±¡ã¯ã©ã¹ã§å®çŸ©ãããå ±éãã£ãŒã«ãã«ã¢ã¯ã»ã¹ããå¿ èŠãããå Žåãç°ãªãåã¢ãã«ã®ã€ã³ã¹ã¿ã³ã¹ãçµ±äžçã«æ±ãã®ãé£ãããªããŸããããããã®åã¢ãã«ãåå¥ã«ã¯ãšãªããå¿ èŠããããŸãã
å€å¯ŸããŒãã«ç¶æ¿
å€å¯ŸããŒãã«ç¶æ¿ãšã¯ïŒ
å€å¯ŸããŒãã«ç¶æ¿ã¯ãç¶æ¿éå±€ã®åã¢ãã«ãç¬èªã®ããŒã¿ããŒã¹ããŒãã«ãæã€ã¢ãã«ç¶æ¿ã®äžçš®ã§ããã¢ãã«ãå€å¯ŸããŒãã«ç¶æ¿ã䜿çšããŠå¥ã®ã¢ãã«ããç¶æ¿ãããšãDjangoã¯åã¢ãã«ãšèŠªã¢ãã«ã®éã«èªåçã«1察1ã®ãªã¬ãŒã·ã§ã³ã·ãããäœæããŸããããã«ãããåã¢ãã«ã®åäžã®ã€ã³ã¹ã¿ã³ã¹ãéããŠãåã¢ãã«ãšèŠªã¢ãã«ã®äž¡æ¹ã®ãã£ãŒã«ãã«ã¢ã¯ã»ã¹ã§ããŸãã
å€å¯ŸããŒãã«ç¶æ¿ã䜿çšããå Žé¢
å€å¯ŸããŒãã«ç¶æ¿ã¯ãããäžè¬çãªã¢ãã«ãšæç¢ºãªãis-aãé¢ä¿ãæã€ç¹åããã¢ãã«ãäœæãããå Žåã«é©ããŠããŸããäžè¬çãªãŠãŒã¹ã±ãŒã¹ã«ã¯ä»¥äžã®ãããªãã®ããããŸãïŒ
- ãŠãŒã¶ãŒãããã¡ã€ã«: ç°ãªãã¿ã€ãã®ãŠãŒã¶ãŒïŒäŸïŒé¡§å®¢ããã³ããŒã管çè ïŒåãã®ç¹åãããŠãŒã¶ãŒãããã¡ã€ã«ãäœæããã
- 補åã¿ã€ã: ç°ãªãã¿ã€ãã®è£œåïŒäŸïŒæžç±ãé»åæ©åšãè¡£é¡ïŒåãã®ç¹åãã補åã¢ãã«ãäœæããã
- ã³ã³ãã³ãã¿ã€ã: ç°ãªãã¿ã€ãã®ã³ã³ãã³ãïŒäŸïŒèšäºãããã°æçš¿ããã¥ãŒã¹èšäºïŒåãã®ç¹åããã³ã³ãã³ãã¢ãã«ãäœæããã
å€å¯ŸããŒãã«ç¶æ¿ã®äŸ
ãŠãŒã¶ãŒãããã¡ã€ã«ã®å€å¯ŸããŒãã«ç¶æ¿ã®äŸãäœæããŠã¿ãŸãããïŒ
from django.db import models
from django.contrib.auth.models import User
class Customer(User):
phone_number = models.CharField(max_length=20, blank=True)
address = models.CharField(max_length=200, blank=True)
def __str__(self):
return self.username
class Vendor(User):
company_name = models.CharField(max_length=100, blank=True)
payment_terms = models.CharField(max_length=100, blank=True)
def __str__(self):
return self.username
ãã®äŸã§ã¯ãCustomerãšVendorã®äž¡ã¢ãã«ãçµã¿èŸŒã¿ã®Userã¢ãã«ãç¶æ¿ããŠããŸããDjangoã¯3ã€ã®ããŒãã«ãäœæããŸãïŒauth_userïŒUserã¢ãã«çšïŒãcustomerããããŠvendorã§ããcustomerããŒãã«ã¯auth_userããŒãã«ãš1察1ã®ãªã¬ãŒã·ã§ã³ã·ããïŒæé»çã«ã¯ForeignKeyïŒãæã¡ãŸããåæ§ã«ãvendorããŒãã«ãauth_userããŒãã«ãš1察1ã®ãªã¬ãŒã·ã§ã³ã·ãããæã¡ãŸããããã«ãããCustomerããã³Vendorã¢ãã«ã®ã€ã³ã¹ã¿ã³ã¹ãéããŠãæšæºã®Userãã£ãŒã«ãïŒäŸïŒusernameãemailãpasswordïŒã«ã¢ã¯ã»ã¹ã§ããŸãã
å€å¯ŸããŒãã«ç¶æ¿ã®å©ç¹
- æç¢ºãªãis-aãé¢ä¿: ã¢ãã«éã®æç¢ºãªéå±€é¢ä¿ã衚ãã
- ããªã¢ãŒãã£ãºã : ç°ãªãåã¢ãã«ã®ã€ã³ã¹ã¿ã³ã¹ã芪ã¢ãã«ã®ã€ã³ã¹ã¿ã³ã¹ãšããŠæ±ãããšãã§ããããã¹ãŠã®`User`ãªããžã§ã¯ããã¯ãšãªããŠã`Customer`ãš`Vendor`ã®äž¡ã€ã³ã¹ã¿ã³ã¹ãå«ãçµæãåŸãããšãã§ããã
- ããŒã¿æŽåæ§: 1察1ã®ãªã¬ãŒã·ã§ã³ã·ãããéããŠãåããŒãã«ãšèŠªããŒãã«éã®åç §æŽåæ§ã匷å¶ããã
å€å¯ŸããŒãã«ç¶æ¿ã®æ¬ ç¹
- ããŒã¿ããŒã¹ã®è€éæ§ã®å¢å : ããŒã¿ããŒã¹ã«ããå€ãã®ããŒãã«ãäœæãããè€éæ§ãå¢ããã¯ãšãªãé ããªãå¯èœæ§ãããã
- ããã©ãŒãã³ã¹ã®ãªãŒããŒããã: è€æ°ã®ããŒãã«ã«ãŸãããããŒã¿ãã¯ãšãªããããšã¯ãåäžã®ããŒãã«ãã¯ãšãªãããããå¹çãæªãå Žåãããã
- ããŒã¿åé·æ§ã®å¯èœæ§: 泚æããªããšãè€æ°ã®ããŒãã«ã«åãããŒã¿ãä¿åããŠããŸãå¯èœæ§ãããã
ãããã·ã¢ãã«
æœè±¡åºåºã¯ã©ã¹ãå€å¯ŸããŒãã«ç¶æ¿ãšåãæå³ã§ã®ã¢ãã«ç¶æ¿ã®çš®é¡ã§ã¯ãããŸãããããããã·ã¢ãã«ã¯ãã®æèã§èšåãã䟡å€ããããŸãããããã·ã¢ãã«ã䜿çšãããšãããŒã¿ããŒã¹ããŒãã«ã倿Žããããšãªããã¢ãã«ã®æ¯ãèãã倿Žã§ããŸããã¢ãã«ã®Metaã¯ã©ã¹ã§proxy = Trueãèšå®ããããšã§ãããã·ã¢ãã«ãå®çŸ©ããŸãã
ãããã·ã¢ãã«ã䜿çšããå Žé¢
ãããã·ã¢ãã«ã¯ã次ã®ãããªå Žåã«äŸ¿å©ã§ãïŒ
- ã¢ãã«ã«ã«ã¹ã¿ã ã¡ãœããã远å ãã: ã¢ãã«ã®ãã£ãŒã«ãããªã¬ãŒã·ã§ã³ã·ããã倿Žããã«ã
- ã¢ãã«ã®ããã©ã«ãã®é åºã倿Žãã: ç¹å®ã®ãã¥ãŒãã³ã³ããã¹ãã®ããã«ã
- ã¢ãã«ãå¥ã®Djangoã¢ããªã§ç®¡çãã: åºã«ãªãããŒã¿ããŒã¹ããŒãã«ãå ã®ã¢ããªã«ä¿æãããŸãŸã
ãããã·ã¢ãã«ã®äŸ
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
published = models.BooleanField(default=False)
def __str__(self):
return self.title
class PublishedArticle(Article):
class Meta:
proxy = True
ordering = ['-title']
def get_absolute_url(self):
return f'/articles/{self.pk}/'
ãã®äŸã§ã¯ãPublishedArticleã¯Articleã®ãããã·ã¢ãã«ã§ããArticleãšåãããŒã¿ããŒã¹ããŒãã«ã䜿çšããŸãããããã©ã«ãã®é åºãç°ãªãïŒordering = ['-title']ïŒãã«ã¹ã¿ã ã¡ãœããïŒget_absolute_urlïŒã远å ãããŠããŸããæ°ããããŒãã«ã¯äœæãããŸããã
é©åãªç¶æ¿ã¿ã€ãã®éžæ
次ã®è¡šã¯ãæœè±¡åºåºã¯ã©ã¹ãšå€å¯ŸããŒãã«ç¶æ¿ã®äž»ãªéãããŸãšãããã®ã§ãïŒ
| æ©èœ | æœè±¡åºåºã¯ã©ã¹ | å€å¯ŸããŒãã«ç¶æ¿ |
|---|---|---|
| ããŒã¿ããŒã¹ããŒãã« | ç¬ç«ããããŒãã«ãªã | ç¬ç«ããããŒãã«ãã |
| ã¯ãšãª | çŽæ¥ã¯ãšãªäžå¯ | 芪ã¢ãã«ãéããŠã¯ãšãªå¯èœ |
| ãªã¬ãŒã·ã§ã³ã·ãã | æç€ºçãªãªã¬ãŒã·ã§ã³ã·ãããªã | 1察1ã®ãªã¬ãŒã·ã§ã³ã·ãã |
| ãŠãŒã¹ã±ãŒã¹ | å ±éã®ãã£ãŒã«ããšã¡ãœããã®å ±æ | ãis-aãé¢ä¿ãæã€ç¹åã¢ãã«ã®äœæ |
| ããã©ãŒãã³ã¹ | åçŽãªç¶æ¿ã§ã¯äžè¬çã«é«é | JOINã«ããé ããªãå¯èœæ§ãã |
é©åãªç¶æ¿ã¿ã€ããéžæããããã®æææ±ºå®ã¬ã€ãã¯æ¬¡ã®ãšããã§ãïŒ
- åºåºã¯ã©ã¹ãçŽæ¥ã¯ãšãªããå¿ èŠããããŸããïŒ ã¯ãã®å Žåãå€å¯ŸããŒãã«ç¶æ¿ã䜿çšããŸãããããã®å Žåãæœè±¡åºåºã¯ã©ã¹ãæ€èšããŸãã
- æç¢ºãªãis-aãé¢ä¿ãæã€ç¹åã¢ãã«ãäœæããŠããŸããïŒ ã¯ãã®å Žåãå€å¯ŸããŒãã«ç¶æ¿ã䜿çšããŸãã
- äž»ã«å ±éã®ãã£ãŒã«ããšã¡ãœãããå ±æããå¿ èŠããããŸããïŒ ã¯ãã®å Žåãæœè±¡åºåºã¯ã©ã¹ã䜿çšããŸãã
- ããŒã¿ããŒã¹ã®è€éæ§ãããã©ãŒãã³ã¹ã®ãªãŒããŒããããæžå¿µããŠããŸããïŒ ã¯ãã®å Žåãæœè±¡åºåºã¯ã©ã¹ãåªå ããŸãã
ã¢ãã«ç¶æ¿ã®ãã¹ããã©ã¯ãã£ã¹
Djangoã§ã¢ãã«ç¶æ¿ã䜿çšããéã«åŸãã¹ããã¹ããã©ã¯ãã£ã¹ãããã€ã玹ä»ããŸãïŒ
- ç¶æ¿éå±€ãæµ ãä¿ã€: æ·±ãç¶æ¿éå±€ã¯çè§£ãä¿å®ãå°é£ã«ãªãå¯èœæ§ããããŸããç¶æ¿éå±€ã®ã¬ãã«æ°ãå¶éããŠãã ããã
- æå³ã®ããååã䜿çšãã: ã³ãŒãã®å¯èªæ§ãåäžãããããã«ãã¢ãã«ããã£ãŒã«ãã«èª¬æçãªååãéžãã§ãã ããã
- ã¢ãã«ãææžåãã: ã¢ãã«ã®ç®çãšæ¯ãèãã説æããããã«ãã¢ãã«ã«docstringã远å ããŠãã ããã
- ã¢ãã«ã培åºçã«ãã¹ããã: ã¢ãã«ãæåŸ ã©ããã«åäœããããšã確èªããããã«ãåäœãã¹ããæžããŠãã ããã
- ããã¯ã¹ã€ã³ã®äœ¿çšãæ€èšãã: ããã¯ã¹ã€ã³ã¯ãè€æ°ã®ã¢ãã«ã«è¿œå ã§ããåå©çšå¯èœãªæ©èœãæäŸããã¯ã©ã¹ã§ããå Žåã«ãã£ãŠã¯ãç¶æ¿ã®è¯ãä»£æ¿ææ®µãšãªãåŸãŸããããã¯ã¹ã€ã³ã¯ãä»ã®ã¯ã©ã¹ã«ç¶æ¿ãããæ©èœãæäŸããã¯ã©ã¹ã§ããããã¯åºåºã¯ã©ã¹ã§ã¯ãªããç¹å®ã®æ¯ãèããæäŸããã¢ãžã¥ãŒã«ã§ããäŸãã°ãã¢ãã«ãžã®å€æŽãèªåçã«ãã°ã«èšé²ãã`LoggableMixin`ãäœæããããšãã§ããŸãã
- ããŒã¿ããŒã¹ã®ããã©ãŒãã³ã¹ã«æ³šæãã: Django Debug Toolbarã®ãããªããŒã«ã䜿çšããŠã¯ãšãªã®ããã©ãŒãã³ã¹ãåæããæœåšçãªããã«ããã¯ãç¹å®ããŠãã ããã
- ããŒã¿ããŒã¹ã®æ£èŠåãæ€èšãã: åãããŒã¿ãè€æ°ã®å Žæã«ä¿åããªãããã«ããŠãã ãããããŒã¿ããŒã¹ã®æ£èŠåã¯ãããŒã¿ããŒã¹ã®æŽåæ§å¶çŽãäŸåé¢ä¿ãé©åã«åŒ·å¶ããããã«ããŒã¿ãããŒãã«ã«æŽçããããšã§ãåé·æ§ãæžãããããŒã¿ã®æŽåæ§ãåäžãããããã®æè¡ã§ãã
äžçäžã®å®çšäŸ
æ§ã ãªã¢ããªã±ãŒã·ã§ã³ã«ãããã¢ãã«ç¶æ¿ã®äœ¿çšã瀺ããäžççãªäŸãããã€ã玹ä»ããŸãïŒ
- Eã³ããŒã¹ãã©ãããã©ãŒã ïŒã°ããŒãã«ïŒ:
- å€å¯ŸããŒãã«ç¶æ¿ã¯ãç°ãªãã¿ã€ãã®è£œåïŒäŸïŒç©çç補åãããžã¿ã«è£œåããµãŒãã¹ïŒãã¢ãã«åããããã«äœ¿çšã§ããŸããå補åã¿ã€ãã¯ãåºæ¬ã®Productã¢ãã«ããååã説æãäŸ¡æ Œãªã©ã®å ±é屿§ãç¶æ¿ãã€ã€ãç¬èªã®ç¹å®ã®å±æ§ãæã€ããšãã§ããŸããããã¯ç¹ã«ãèŠå¶ãç©æµã«ãã補åã®ããªãšãŒã·ã§ã³ãæç¢ºãªã¢ãã«ãå¿ èŠãšããåœéçãªEã³ããŒã¹ã§åœ¹ç«ã¡ãŸãã
- æœè±¡åºåºã¯ã©ã¹ã¯ããã¹ãŠã®ç©çç補åã«ãshipping_weightãããdimensionsãã®ãããªå ±éãã£ãŒã«ãã远å ãããããã¹ãŠã®ããžã¿ã«è£œåã«ãdownload_linkãããfile_sizeãã远å ããããã«äœ¿çšã§ããŸãã
- äžåç£ç®¡çã·ã¹ãã ïŒåœéïŒ:
- å€å¯ŸããŒãã«ç¶æ¿ã¯ãç°ãªãã¿ã€ãã®äžåç£ïŒäŸïŒäœå® çšäžåç£ã忥çšäžåç£ãåå°ïŒãã¢ãã«åã§ããŸããåã¿ã€ãã¯ãäœå® çšäžåç£ã®ãnumber_of_bedroomsãã忥çšäžåç£ã®ãfloor_area_ratioãã®ãããªç¬èªã®ãã£ãŒã«ããæã€ããšãã§ããåºæ¬ã®Propertyã¢ãã«ãããaddressãããpriceããªã©ã®å ±éãã£ãŒã«ããç¶æ¿ããŸãã
- æœè±¡åºåºã¯ã©ã¹ã¯ãäžåç£ã®å©çšå¯èœæ§ã远跡ããããã«ããlisting_dateãããavailable_dateãã®ãããªå ±éãã£ãŒã«ãã远å ã§ããŸãã
- æè²ãã©ãããã©ãŒã ïŒã°ããŒãã«ïŒ:
- å€å¯ŸããŒãã«ç¶æ¿ã¯ãç°ãªãã¿ã€ãã®ã³ãŒã¹ïŒäŸïŒãªã³ã©ã€ã³ã³ãŒã¹ã察é¢ã³ãŒã¹ãã¯ãŒã¯ã·ã§ããïŒã衚ãããšãã§ããŸãããªã³ã©ã€ã³ã³ãŒã¹ã¯ãvideo_urlãããdurationãã®ãããªå±æ§ãæã¡ã察é¢ã³ãŒã¹ã¯ãlocationãããscheduleãã®ãããªå±æ§ãæã€ããšãã§ããŸãããåºæ¬ã®Courseã¢ãã«ãããtitleãããdescriptionããªã©ã®å ±é屿§ãç¶æ¿ããŸããããã¯ã倿§ãªæäŸæ¹æ³ãæäŸããäžçäžã®ããŸããŸãªæè²ã·ã¹ãã ã§åœ¹ç«ã¡ãŸãã
- æœè±¡åºåºã¯ã©ã¹ã¯ããã¹ãŠã®ã³ãŒã¹ã«ããã£ãŠäžè²«æ§ã確ä¿ããããã«ããdifficulty_levelãããlanguageãã®ãããªå ±éãã£ãŒã«ãã远å ã§ããŸãã
çµè«
Djangoã®ã¢ãã«ç¶æ¿ã¯ãããæ§é åãããä¿å®æ§ã®é«ãããŒã¿ããŒã¹ã¹ããŒããæ§ç¯ããããã®åŒ·åãªããŒã«ã§ããæœè±¡åºåºã¯ã©ã¹ãšå€å¯ŸããŒãã«ç¶æ¿ã®éããçè§£ããããšã§ãç¹å®ã®ãŠãŒã¹ã±ãŒã¹ã«é©ããã¢ãããŒããéžæã§ããŸããæ±ºå®ãäžãéã«ã¯ãã³ãŒãã®åå©çšæ§ãããŒã¿ããŒã¹ã®è€éæ§ãããã³ããã©ãŒãã³ã¹ã®ãªãŒããŒãããã®éã®ãã¬ãŒããªããèæ ®ããããšãå¿ããªãã§ãã ããããã®èšäºã§æŠèª¬ãããã¹ããã©ã¯ãã£ã¹ã«åŸãããšã§ãå¹ççã§ã¹ã±ãŒã©ãã«ãªDjangoã¢ããªã±ãŒã·ã§ã³ãäœæããã®ã«åœ¹ç«ã¡ãŸãã