我是Django的新手(几乎和DDBB一样)。我正在创建两个模型:QUESTIONS和SIGNATURES。我想在数据库中进行一些搜索问题的签名。例如,搜索历史签名(或生物学等)的10个问题。
主要问题是每个问题都可能属于不同的签名(例如Math和Phisycs)。
我想到了QUESTIONS模型中的一个整数字段,它提供了签名的信息,例如签名的二进制表示:1010001,其中每个位置表示相关签名的存在(或不存在)。这个问题是看BBDD是不够的,但你必须在确定签名是否相关之前进行计算。
此操作会减慢搜索速度吗?
我听说过很多东西,这对于解决这种情况会不会更好?
感谢您的评论
答案 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)