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)
3 Réponses :
Pour filtrer tous les contrats actifs, vous devez utiliser le gestionnaire d'objets de Contrat
active_contracts = Contrato.objects.filter(active=True)
Vous devez mettre à jour votre fichier admin.py en fonction de votre commentaire, vous effectuez ce qui suit.
Vous devez écraser la méthode get_form dans le fichier admin.py. P>
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 i>
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) code>
form.base_fields ['contrato']. QuerySet = contrat.ObjectS.filter (actif = vrai) Code >
Formulaire de retour code>
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