Django - 从字段

时间:2017-07-28 08:38:23

标签: django

我正在寻找使用distinct()命令从我的数据库中获取不同的对象。

我有这个型号:

class CoefficientIntervention(models.Model):

    Technicien = models.FloatField(verbose_name="Coefficient Technicien")
    Ingenieur = models.FloatField(verbose_name="Coefficient Ingénieur")
    Consultant = models.FloatField(verbose_name="Coefficient Consultant")
    Architecte = models.FloatField(verbose_name="Coefficient Architecte")
    Societe = models.ForeignKey(Societe, related_name="ste", verbose_name="Société", default="")

    def __unicode__(self):
        return unicode (self.id, self.Technicien, self.Ingenieur, self.Consultant, self.Architecte, self.Societe)

我的表单如下:

class CoefficientFormulaire(forms.ModelForm) :

    Societe = CustomLabelModelChoiceField(Societe.objects.filter(), required=True, label = "Societe", label_func=lambda obj: '%s %s' % (obj.id, obj.Nom))

    class Meta :
        model = CoefficientIntervention
        fields = ['Technicien', 'Ingenieur', 'Architecte', 'Consultant','Societe']

我的观点非常简单:

@login_required
def Identity_Societe_Coefficient(request) :

    if not request.user.is_superuser :
        raise Http404


    coefficient = CoefficientIntervention.objects.order_by('Societe').values('Societe').distinct()
    print coefficient

    if request.method == 'POST':

        form = CoefficientFormulaire(request.POST or None)

        if form.is_valid() :   # Vérification sur la validité des données
            post = form.save()

            messages.success(request, 'Le formulaire a été enregistré !')
            return HttpResponseRedirect(reverse('Coefficient'))

        else:
            messages.error(request, "Le formulaire est invalide !")

    else:
        form = CoefficientFormulaire()

    context = {
        "coefficient" : coefficient,
        "form" : form,
    }

    return render(request, 'Identity_Societe_Coefficient.html', context)

我的桌子有三行,例如:

enter image description here

如果我打印coefficient,我会得到:<QuerySet [{'Societe': 2L}, {'Societe': 3L}]>

但是我想在我的数组中显示不同的对象,并且每次都使用最后一个。

我的模板如下:

<table class="lg-tableau-coeff">
                <tbody>
                <tr>
                    <th>ID</th>
                    <th>Coefficient Technicien</th>
                    <th>Coefficient Ingénieur</th>
                    <th>Coefficient Consultant</th>
                    <th>Coefficient Architecte</th>
                    <th>Société</th>
                </tr>
                {% for item in coefficient %}
                <tr>
                    <td>{{ item.id}}</td>
                    <td>{{ item.Technicien}}</td>
                    <td>{{ item.Ingenieur}}</td>
                    <td>{{ item.Consultant }}</td>
                    <td>{{ item.Architecte }}</td>
                    <td>{{item.Societe.Nom}}</td>
                </tr>
                {% endfor %}
                </tbody>
            </table>

我怎么能这样做?

更新:

使用MySQL,命令是:

SELECT * FROM Identity_coefficientintervention WHERE id IN (SELECT MAX(id) FROM Identity_coefficientintervention GROUP BY Societe_id)

所以我必须找到如何将其转换为Django Query

0 个答案:

没有答案