在Django中使用codification或manyToMany字段?

时间:2012-08-06 17:22:13

标签: database django

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

主要问题是每个问题都可能属于不同的签名(例如Math和Phisycs)。

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

此操作会减慢搜索速度吗?

我听说过很多东西,这对于解决这种情况会不会更好?

感谢您的评论

1 个答案:

答案 0 :(得分: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)