我需要创建一个模型来包含一组与两个独立模型相关的数据,并且对于这两个模型的组合是唯一的。
例如,假设我有一个用户Profile
模型和一个Dessert
模型。该Profile
模型包含用户的偏好和个人信息,该Dessert
模型包含有关甜点的信息(卡路里、成本、类型等)。我现在想创建一个模型,允许用户记录给定甜点的“味觉测试”结果。每个用户都可以对每个甜点进行口味测试,但只能进行一次(即,每个用户/甜点组合的口味测试是唯一的)。
我怎样才能做到这一点?它似乎不适合 a through
(如此处所述:如何将模型绑定到其他两个已经相关的模型并显示信息?)因为大多数时候我希望在没有口味测试(例如,显示有关甜点的信息并将其与其他甜点进行比较)。Athrough
会增加很多不必要的开销。
我能想出的最佳解决方案是创建一个“TasteTest”模型,如下所示:
class TasteTest(models.Model):
user_profile = models.ForeignKey(Profile)
dessert = models.ForeignKey(Dessert)
# Taste test results here
我有两个相关的问题。首先,这是最好/正确的方法吗?或者,还有更好的方法?其次,查找时涉及的数据库开销是多少?要访问给定用户对给定甜点的味觉测试,我似乎必须执行以下操作:
user.profile.tastetest_set.get(dessert=given_dessert.pk)`
这似乎是一个昂贵的查找(虽然我真的不熟悉数据库的东西,这就是我问的原因)。