我正在开发简单的评分和评论应用程序以添加到我的项目中,并正在寻找有关创建模型的建议。
通常,我会像这样创建这些数据库模式:
comment_
id - primary key
type - varchar (buyer_item, buyer_vendor, vendor_buyer)
source_id - int (primary key of the table based on the type)
target_id - int (primary key of the table based on the type))
timestamp - timestamp
subject - varchar
comment - text
rating_
id - primary key
type - varchar (buyer_item, buyer_vendor, vendor_buyer)
source_id - int (primary key of the table based on the type)
target_id - int (primary key of the table based on the type)
timestamp - timestamp
rating - int (the score given, ie: 1-5 stars)
这将让我有简单的方法,允许我通过设置正确的类型并设置提交者的 id (source_id) 它适用于 (target_id) 来将评论或评级应用于任何类型的事物,例如:
add_comment('user_product', user.pk, product.pk, now, subject, comment)
add_comment('user_vendor', user.pk, vendor.pk, now, subject, comment)
我知道在模型中,您将与其他表的关系定义为模型的一部分。我将如何定义这些类型的表中的关系,其中 TYPE 字段确定 SOURCE_ID 和 TARGET_ID 链接到哪个表。
或者我应该在获得 QuerySets 时忽略模型中的关系并设置连接?
或者干脆抛弃 who common table 的想法并为每个关系制作一大堆不同的表(例如:user_ratings、product_ratings、transaction_ratings 等)?
这里的最佳做法是什么?我的 DBA 感觉说使用公用表,但 Django 新手我不确定本地人会做什么。
谢谢!