Django评论网站的数据库设计

时间:2012-03-03 23:20:35

标签: python django database-design

您好我正在开发一个用于学习Django的评论网站。

每篇评论都有一个评分属性列表,如:

  • 价格: [x] [x] [x] [x] [x]
  • 位置: [x] [x] [] [] []
  • 舒适度: [x] [x] [x] [] []

我坚持写评论/评级模型。我怎样才能用MVC模式描述这个?评级属性列表可以不同。

目前我有这段代码:

class Place(models.Model):
    name = models.CharField(max_length=512)
    address = models.CharField(max_length=512)
    author = models.ForeignKey(UserProfile)

class Review(models.Model):
    ????

class Review(models.Model):
    name = models.CharField(max_length=1024)
    text = models.TextField()
    author = models.ForeignKey(UserProfile)
    place = models.ForeignKey(place)
    ratings = models.ForeignKey(Rating)

任何提示?

1 个答案:

答案 0 :(得分:1)

如果事先可以获得(潜在)属性列表,您可以为每个属性引入一个数据库字段,并将未设置属性存储为None

class Review(models.Model):
    name = models.CharField(max_length=1024)
    text = models.TextField()
    author = models.ForeignKey(UserProfile)
    place = models.ForeignKey(place)

    price_rating = models.IntegerField(null=True)
    location_rating = models.IntegerField(null=True)
    # ...

否则(如果属性/评级完全可变),您必须创建另一个模型来存储您的属性(删除上面的_rating字段):

class ReviewAttribute(models.Model):
    review = models.ForeignKey(Review, related_name='attributes')
    name = models.CharField(max_length=100)
    value = models.IntegerField()