Ограничение выбора в форме django отношениями по ключевым словам - PullRequest
0 голосов
/ 11 мая 2019

Моя модель

класс MacroPianoDeiConti (модели. Модель):

codice = models.CharField(max_length=6)
descrizione = models.CharField(max_length=400)

класс PianoDeiConti (models.Model):

macro = models.ForeignKey(MacroPianoDeiConti, on_delete=models.SET_NULL, null=True, blank=True,
                               default=None, related_name='MacroP')
codice = models.CharField(max_length=6)
descrizione = models.CharField(max_length=400)

tipo = models.ForeignKey(ContoTipo, on_delete=models.SET_NULL, null=True, blank=True,
                          default=None, related_name='ContTi')

def __str__(self):
    return str(self.codice) + ' ' + self.descrizione

класс CostoDocumento (models.Model):

dataregistrazione = models.DateField(default=date.today())
numerodocumento = models.CharField(max_length=6)
datadocumento = models.DateField(default=date.today())
fornitore = models.ForeignKey(Fornitori, on_delete=models.SET_NULL, null=True, blank=False,
                          default=None, related_name='Forn')
importo = models.FloatField(null=True, blank=False, default='0')

conto = models.ForeignKey(PianoDeiConti, on_delete=models.SET_NULL, null=True, blank=False,
                               default=None, related_name='Cont')
inizio = models.DateField(null = True, blank = True, default = None)
fine = models.DateField(null=True, blank=True, default=None)

def __str__(self):
    return self.dataregistrazione + ' ' + self.fornitore

'' '

А это моя форма:

''» Класс CostoDocumentoForm (forms.ModelForm):

Мета класса:

model = CostoDocumento
fields = '__all__'
labels = {
    'dataregistrazione': _('Data Registrazione'), 'numerodocumento': _('Numero Documento'),
    'datadocumento': _('Data Documento'), 'fornitore': _('Fornitore'), 'importo': _('Importo'),
    'conto': _('Conto'), 'inizio': _('Inizio Periodo'), 'fine': _('Fine Periodo'),
}

def __init__(self, *args, **kwargs):
    super(CostoDocumentoForm, self).__init__(*args, **kwargs)
    self.fields['conto__macro_id'].queryset = self.fields['conto__macro_id'].queryset.filter(conto__macro=1)

'' '

Я хочу отфильтровать каскадные поля в шаблоне по conto__macro = 1

TY

EDIT:

forms.py

def __init__(self, *args, **kwargs):
    super (CostoDocumentoForm,self ).__init__(*args,**kwargs) # populates the post
    self.fields['conto'].queryset = PianoDeiConti.objects.exclude(macro_id=8).exclude(tipo_id=3)

это работает

...