私は Django を初めて使用し、ManyToMany 関係に問題があります。私はblastnの自動化に取り組んでおり、ここに私のクラスがあります:
class Annotation(models.Model):
sequence = models.IntegerField()
annotation = models.TextField()
start = models.IntegerField()
end = models.IntegerField()
class Blast(models.Model):
sequence = models.ManyToManyField(Annotation, through="AnnotBlast")
expectValue = models.IntegerField()
class AnnotBlast(models.Model):
id_blast = models.ForeignKey(Blast, to_field="id")
id_annot = models.ForeignKey(Annotation, to_field="id")
class Hit(models.Model):
id_hit = models.ForeignKey(Blast, to_field="id")
length = models.IntegerField()
evalue = models.IntegerField()
start_seq = models.IntegerField()
end_seq = models.IntegerField()
ビューでは、この多対多フィールドを介してモデルの残りの部分から Annotation のデータにアクセスし、フォームに基づいてフィルターを適用したいと考えています。しかし、実行するsyncdb
と、Blast クラスの「シーケンス」フィールドが消えます。
Sqlite3 で:
.schema myApp_blast
CREATE TABLE "myApp_blast" (
"id" integer not null primary key,
"expectValue" integer not null
);
そのため、このテーブルに必要なデータをロードできません。syncdb 中にこのフィールドが消える理由がわかりません。最初のクラスを他のクラスにリンクするにはどうすればよいですか (そして、テンプレートにデータをマージできるようにするには) ?