Django - 我是否朝着正确的方向创建我的电话审查应用程序的模型?



我是Django的初学者。我正在为一个名为PhoneReview的Django应用程序构建数据模型。它将存储与最新手机相关的评论。 它的表格应包括:

a. 品牌 – 品牌详情,例如名称、产地、制造时间等

b. 型号 – 型号详情,例如型号名称、发布日期、平台等

c. 评论 – 在手机上评论文章和发布日期等

d. 复习与模型的多对多关系。

以下是我在 models.py 中的代码:

from django.db import models
from django.template.defaultfilters import slugify
# Create your models here.
class Brand(models.Model):
brandName = models.CharField(max_length=100)
origin = models.CharField(max_length=100)
manufacturingSince = models.CharField(max_length=50, default='null')
def __str__(self):
return self.brandName
class PhoneModel(models.Model):
modelName = models.CharField(max_length=100)
launchDate = models.CharField(max_length=100)
platform = models.CharField(max_length=100)
def __str__(self):
return self.modelName
class Review(models.Model):
model_name_many_to_many = models.ManyToManyField(PhoneModel)
reviewArticle = models.CharField(max_length=1000)
datePublished = models.DateField(auto_now=True)
slug = models.SlugField(max_length=150, default='null')
def __str__(self):
return self.reviewArticle

我的代码正确吗?我的方向是否正确?

不要在模型字段中使用 camelCase。使用snake_case。第二件事是,当您希望字段默认为"null"时,只需使用 null=True,blank=True(可选值(。 我还为您的ManyToManyField提供了related_name,因此您可以使用PhoneModelInstance.reviews.all((来获取此特定电话型号的所有评论。对于包含文本的大字段,请使用文本字段。

编辑

我还在PhoneModel中添加了指向品牌的外键。

from django.db import models
from django.template.defaultfilters import slugify
# Create your models here.
class Brand(models.Model):
brand_name = models.CharField(max_length=100)
origin = models.CharField(max_length=100)
manufacturing_since = models.TextField(null=True, blank=True)
def __str__(self):
return self.brand_name
class PhoneModel(models.Model):
brand_fk = models.ForeignKey(Brand)
model_name = models.CharField(max_length=100)
launch_date = models.CharField(max_length=100)
platform = models.CharField(max_length=100)
def __str__(self):
return self.model_name
class Review(models.Model):
phone_model = models.ManyToManyField(PhoneModel, related_name='reviews')
review_article = models.TextField()
date_published = models.DateField(auto_now=True)
slug = models.SlugField(max_length=150, null=True, blank=True)
def __str__(self):
return self.review_article

相关内容

最新更新