Django多对多自我字段和str()方法的模型

时间:2015-11-20 09:50:39

标签: python django forms django-templates many-to-many

美好的一天!

我有一个非常简单的模型,包含多对一或多对多的“自我”字段,例如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时非常奇怪:

  1. forms.ModelChoiceFieldforms.ModelMultipleChoiceField django命中DB的所有情况下(使用.str()模型的方法)select * from ...
  2. 在所有情况下,forms.ModelMultipleChoiceField django为数据库中的每个land_plot_prev_id按select * from ...select land_plot_prev_id from ...点击数据库!
  3. 每次我使用{{form。 foreign_key_name }} django命中数据库select * from ...并且只接受值 foreign_key_name
  4. 如果我的 formsets 包含由ModelChoiceField创建的html字段 此类select * from ...的数量乘以给定formset中的表单数量。

    我得出结论,我应该避免使用标签{{ form.foreign_key }}

    PS
    我使用Django调试工具栏来检查由django ORM生成的SQl

0 个答案:

没有答案