2012-08-06 35 views
0

我是新的Django(和DDBB差不多)。我創建了兩個模型:QUESTIONS和SIGNATURES。我想在數據庫中進行一些關於問題簽名的搜索。例如搜索歷史簽名(或生物等)的10個問題。在Django中使用編碼或manyToMany字段?

主要問題是每個問題都可能屬於不同的簽名(例如Math和Phisycs)。

我想到QUESTIONS模型中給出簽名信息的整數字段,例如簽名的二進制表示:1010001其中每個位置表示簽名相關的存在(或不存在)。問題在於沒有足夠的注意BBDD,但是在確定簽名是否關聯之前,您還必須進行計算。

此操作會減慢搜索過多嗎?

我聽說manyToMany字段,這是一個更好的方法來解決這種情況?

感謝您的意見

回答

0

這很容易通過使用多對多字段解決。許多領域做的是創建第二個表來加入這些關聯。因此,例如,

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

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

除了表問題和用於簽名被叫appname_question_signature第三表將被創建,其中所述問題表的主鍵將被映射到的簽名表。由於您可以在此表中有多個條目,因此任何問題都可以映射到任意數量的簽名,反之亦然。

,並查詢所有歷史問題,你會去

sig=Signature.objects.get(signature="History") 
questions=Question.objects.get(signatures=sig) 
+0

謝謝德里克,這似乎符合得很好,我的問題... – 2012-08-07 10:07:24

相關問題