3

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

一个。品牌 – 品牌的详细信息,例如名称、产地、制造时间等

湾。型号 - 有关型号的详细信息,例如型号名称、发布日期、平台等

C。评论——手机上的评论文章和发表日期等

d。Review 和 Model 之间的多对多关系。

这是我在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

我的代码正确吗?我在正确的方向吗?

4

1 回答 1

1

不要在模型字段中使用 camelCase。使用snake_case。第二件事是,当您希望字段默认为“null”时,只需使用 null=True,blank=True(可选值)。我还为您的 ManyToManyField 提供了 related_name,因此您可以使用 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
于 2019-10-15T06:27:26.513 回答