Python Django-我在创建手机评论应用程序模型方面的方向正确吗?

Python Django-我在创建手机评论应用程序模型方面的方向正确吗?,python,django,Python,Django,我是Django的初学者。我正在为一个名为PhoneReview的Django应用程序构建一个数据模型。它将存储与最新手机相关的评论。其表格应包括: a。品牌–品牌的详细信息,如名称、产地、生产日期等 b。型号–有关型号的详细信息,如型号名称、发布日期、平台等 c。评论–评论关于手机的文章和发布日期等 d。审查和模型之间的多对多关系 以下是我在models.py中的代码: from django.db import models from django.template.defaultfilte

我是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。用蛇壳。第二件事是,当您希望字段默认为“null”时,只需使用null=True,blank=True(可选值)。 我还提供了您的ManyToManyField的相关名称,因此您可以使用PhoneModelInstance.reviews.all()获取此特定手机型号的所有评论。对于包含文本的大字段,请使用TextField

编辑 我还在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

谢谢你的回答。但是,我有一个关于phone_model=models.ManyToManyField(phone model,related_name='reviews')的问题。基本上,这一行允许我在Review类中使用PhoneModel类的所有变量。我说得对吗?相关的_name='reviews'的用途是什么?Review实例示例:Review_obj.phone_model.all()-返回与此评论相关的所有PhoneModel对象。PhoneModel实例示例:phone\u model\u obj.reviews.all()-返回与此PhoneModel相关的所有审阅对象。有关相关名称的说明,请选中