0
votes

Comment filtrer des modèles sur Django-admin

J'ai deux modèles:

class Contrato(models.Model):
    active= models.BooleanField(default=False, verbose_name="Activo?")
    .....

    def __str__(self,):
        return str(self.id) + '- ' + str(self.forcenedor)

class Fatura(models.Model):
    contrato = models.ForeignKey(Contrato, on_delete=models.CASCADE,verbose_name="Contrato")
    designação =  models. CharField(verbose_name="Designação",max_length=30)
    ..............

    def __str__(self,):
        return str(self.id)             


0 commentaires

3 Réponses :


0
votes

Pour filtrer tous les contrats actifs, vous devez utiliser le gestionnaire d'objets de Contrat

active_contracts = Contrato.objects.filter(active=True)


0 commentaires

2
votes

Vous devez mettre à jour votre fichier admin.py xxx

en fonction de votre commentaire, vous effectuez ce qui suit. Vous devez écraser la méthode get_form dans le fichier admin.py. xxx


3 commentaires

En fait, cela fonctionne, mais cela ne fait pas ce que j'ai l'intention de faire, peut-être parce que je me suis tellement expliqué. Je veux toute la liste si elle n'est pas active ou active, je veux juste filtrer quand j'ajoute une nouvelle Fatura


Dans ce cas, vous devez écraser la méthode get_form dans le fichier admin.py. Def get_form (Self, demande, obj = aucun, ** kwargs): form.base_fields ['contrato']. QuerySet = contrat.ObjectS.filter (actif = vrai)


formulaire = super (). get_form (demande, obj, ** kwargs) form.base_fields ['contrato']. QuerySet = contrat.ObjectS.filter (actif = vrai) Formulaire de retour



0
votes
def get_form(self, request, obj=None, **kwargs):
    form = super(FaturaAdmin, self).get_form(request, obj=obj, **kwargs)
    form.base_fields['contrato'].queryset = Contrato.objects.filter(active=True)
    return form

0 commentaires