django - 使用 django-extra-views 自动完成
问题描述
我正在使用django-extra-views,我想对InlineFormSetFactory
. 我尝试使用django-ajax-selects但它没有用......有没有简单的方法可以做到这一点?
我的models.py
:
class Index(models.Model):
id_index = models.AutoField(primary_key=True)
index_name = models.CharField(max_length=30)
index_id_index_type = models.ForeignKey(IndexType, on_delete=models.CASCADE, db_column='id_index_type', verbose_name="Tipus d'índex")
index_id_index_provider = models.ForeignKey(IndexProvider, on_delete=models.CASCADE, db_column='id_index_provider', verbose_name="Proveïdor d'índex")
miseq = models.CharField(max_length=9)
nextseq = models.CharField(max_length=9)
class Meta:
db_table = 'index'
unique_together = (("index_name", "index_id_index_type", "index_id_index_provider", "miseq", "nextseq"),)
def __str__(self):
return self.index_name
class GeneCandList(models.Model):
id_gene_cand_list = models.AutoField(primary_key=True)
name = models.CharField(unique=True, max_length=150, verbose_name="Llista de gens candidats")
class Meta:
db_table = 'gene_cand_list'
def __str__(self):
return self.name
class Pool(models.Model):
id_pool = models.AutoField(primary_key=True)
name = models.CharField(unique=True, max_length=50, verbose_name="Pool")
hibridation = models.BooleanField(verbose_name="Hibridació OK?")
samples = models.ManyToManyField('Sample', through='SamplePoolIndexCand', blank=True, verbose_name="Mostres"
class Meta:
ordering = ['-id_pool']
db_table = 'pool'
def __str__(self):
return self.name
class Sample(models.Model):
id_sample = models.AutoField(primary_key=True)
name = models.CharField(unique=True, max_length=20)
sample_id_sex = models.ForeignKey(Sex, on_delete=models.CASCADE, db_column='id_sex', verbose_name='Sexe')
indexes = models.ManyToManyField(Index, through='SamplePoolIndexCand', through_fields=('sample_id', 'index_id'), blank=True, verbose_name="Índexs")
pools = models.ManyToManyField(Pool, through='SamplePoolIndexCand', through_fields=('sample_id', 'pool_id'), blank=True, verbose_name="Pools")
gene_cand_lists = models.ManyToManyField(GeneCandList, through='SamplePoolIndexCand', through_fields=('sample_id', 'gene_cand_list_id'), blank=True, verbose_name="Llista de gens candidats")
class Meta:
db_table = 'sample'
def __str__(self):
return self.name
class SamplePoolIndexCand(models.Model):
sample_id = models.ForeignKey(Sample, null=True, blank=True, on_delete=models.CASCADE, db_column='id_sample', verbose_name='Mostra')
pool_id = models.ForeignKey(Pool, null=True, blank=True, on_delete=models.CASCADE, db_column='id_pool', verbose_name='Pool')
index_id = models.ForeignKey(Index, null=True, blank=True, on_delete=models.CASCADE, db_column='id_index', verbose_name='Índex')
gene_cand_list_id = models.ForeignKey(GeneCandList, null=True, blank=True, on_delete=models.CASCADE, db_column='id_gene_cand_list', verbose_name='Llista de gens candidats')
class Meta:
unique_together = (("sample_id", "pool_id", "index_id", "gene_cand_list_id"),)
db_table = 'sample_pool_index_cand'
我的views.py
:
class PoolIndexCandInLine(InlineFormSetFactory):
model = SamplePoolIndexCand
pool_id = AutoCompleteSelectField('pool_tag')
index_id = AutoCompleteSelectField('index_tag')
gene_cand_list_id = AutoCompleteSelectField('list_tag')
fields = ["pool_id", "index_id", "gene_cand_list_id",]
class SampleForm(CreateWithInlinesView):
model = Sample
inlines = [PoolIndexCandInLine]
fields = ["name", "sample_id_sex",]
template_name = 'sample/formulari_mostra.html'
success_url = reverse_lazy('Sample form')
解决方案
推荐阅读
- angular - 从服务访问模板引用
- powerbi - 无法在 Power Bi 中显示视觉效果
- c - ADXL345 只读 ceros
- java - 坚持理解递归
- c++ - 如何修复 AF_UNIX 中 bind() 返回的“地址已在使用中”
- opengl - OpenGL 0(84):错误 C7623:类型从“vec4”隐式缩小到“float”
- tensorflow-datasets - tensorflow_datasets.load() 下载但无法提取某些数据集
- python - 如何在 Python 中定义自己的范围函数
- html - 是否可以使用旧学校页面转换元标记?
- twitter-bootstrap - Bootstrap4 - 从另一个按钮/标签触发选项卡链接