模型配置:根据位置类型动态分配问题

时间:2016-11-22 07:43:55

标签: django django-models

我有一个应用程序可以添加位置,用户可以留下评论(5星评级)。这已经有效了。

我想做的是为评论添加问题和选择。但是,我想确保只询问某些类型的问题,具体取决于位置的类型。

到目前为止,我正在考虑使用OneToOneField扩展Location的类型,这与官方文档示例非常相似,其中Restaurant和Place具有OneToOneField关系,然后使用ManyToManyField进一步指定类别和子类别模型。

但是,我正在努力解决的问题是如何向某个地点的所有类型添加问题。

我目前的问题是,必须逐个地添加问题。相反,我想要的是向所有餐厅添加一个问题(OneToOneField到位置),甚至可以添加到类别(ManyToManyField到餐馆)。

前进的最佳方式是什么?我是否还需要另一个模型来保存一种位置的问题配置?

另外,不相关的说明但是我可以有属性问题的课题吗?或者这会让我感到悲伤吗?

感谢您提供进一步了解的任何提示/建议。

class Location(models.Model):
    ...
    questions = models.ManyToManyField('reviews.Question', blank=True)

class Restaurant(models.Model):
    ...
    location = models.OneToOneField(Location, on_delete=models.CASCADE,
    primary_key=True,)

class Review(models.Model):
    ...
    reviewer = models.ForeignKey(UserProfile, on_delete=models.CASCADE)
    location = models.ForeignKey(Location, on_delete=models.CASCADE)
    RATING_STAR_CHOICES = (
        (1, '1 star'),
        (2, '2 star'),
        (3, '3 star'),
        (4, '4 star'),
        (5, '5 star'),
    )
    stars = models.IntegerField(choices=RATING_STAR_CHOICES)
    description = models.TextField(null=True, blank=True)

class Answer(models.Model):
    answer = models.CharField(max_length=30)


class Question(models.Model):
    question = models.CharField(max_length=120)
    answers = models.ManyToManyField(Answer)
    review = models.ForeignKey(Review, null=True, blank=True,
    on_delete=models.CASCADE)

0 个答案:

没有答案