0

我正在开发简单的评分和评论应用程序以添加到我的项目中,并正在寻找有关创建模型的建议。

通常,我会像这样创建这些数据库模式:

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 新手我不确定本地人会做什么。

谢谢!

4

1 回答 1

2

我认为您正在寻找的是通用关系,您可以在 contenttypes 框架中找到这种类型的东西:https ://docs.djangoproject.com/en/1.0/ref/contrib/contenttypes/#generic-relations

于 2013-06-17T19:20:29.030 回答