美好的一天!
我有一个非常简单的模型,包含多对一或多对多的“自我”字段,例如land_plot_prev_id
:
class LAND_PLOT(models.Model):
land_plot_id = models.AutoField (primary_key=True, blank=False, null=False)
land_plot_prev_id = models.ManyToManyField ('self', through = 'LT_LANDPLOT_FROM_LANDPLOT', symmetrical = False, related_name='lt_land_plot_id_previous', blank=True, null=True)
# ...
def __str__(self):
return(str(self.land_plot_id) + " (" + self.district_id.district_name + " " + str(self.land_plot_endorsed_square) + " m.)")
在我的模板中,我使用land_plot_prev_id
等字段以这种方式显示html <select>
或<select multiple>
:
<div class="form-group col-lg-4 col-lg-offset-0">
<div class="input-group multiply-full">
<span class="input-group-addon" title="...">ZU№</span>
{{form.land_plot_prev_id}}
</div>
</div>
我最近发现django击中DB时非常奇怪:
forms.ModelChoiceField
或forms.ModelMultipleChoiceField
django命中DB的所有情况下(使用.str()模型的方法)select * from ...
forms.ModelMultipleChoiceField
django为数据库中的每个land_plot_prev_id按select * from ...
和select land_plot_prev_id from ...
点击数据库!select * from ...
并且只接受值 foreign_key_name 如果我的 formsets 包含由ModelChoiceField创建的html字段
此类select * from ...
的数量乘以给定formset中的表单数量。
我得出结论,我应该避免使用标签{{ form.foreign_key }}
。
PS
我使用Django调试工具栏来检查由django ORM生成的SQl