0

我是 Django 的新手(几乎是 DDBB)。我正在创建两个模型:问题和签名。我想在数据库中进行一些搜索以关注问题的签名。例如搜索历史签名(或生物学等)的 10 个问题。

主要问题是每个问题都可能属于不同的签名(例如数学和物理)。

我想到了 QUESTIONS 模型中的一个整数字段,它提供了签名的信息,例如签名的二进制表示:1010001,其中每个位置都表示相关签名的存在(或不存在)。这样做的问题是,对 BBDD 的了解还不够,而且您必须在确定签名是否关联之前进行计算。

这个操作会不会太慢搜索?

我听说过 manyToMany 领域,这是解决这种情况的更好方法吗?

感谢您的意见

4

1 回答 1

0

这很容易通过使用多对多字段来解决。多对多字段所做的是创建第二个表来加入关联。例如,

class Signature(models.Model):
    signature=models.CharField()  

class Question(models.Model):
    question=models.CharField()
    signatures=models.ManyToManyField(Signature)

除了 Question 表和 Signature 表之外,还将创建名为 appname_question_signature 的第三个表,其中问题表的主键将映射到签名。由于您可以在此表中有多个条目,因此任何问题都可以映射到任意数量的签名,反之亦然。

并查询你会去的所有历史问题

sig=Signature.objects.get(signature="History")
questions=Question.objects.get(signatures=sig)
于 2012-08-07T08:31:16.150 回答