[Python] Django ForeignKey escludere elemeni con limit_choices_to

Valerio Maggio valerio.maggio a gmail.com
Mar 5 Nov 2013 17:30:27 CET


On 05 Nov 2013, at 13:08, Daniele Varrazzo <piro a develer.com> wrote:

> On 2013-11-05 11:25, Zanon Samuele wrote:
>> 
>> Sostanzialmente dovrebbe essere eseguita una query del tipo:
>> Volontario.objects.exclude(pk__in=Info.objects.all())
> 
> Prova a dare un'occhiata ai Manager personalizzati ('Volontario.objects' è il manager di default)
> 
> https://docs.djangoproject.com/en/dev/topics/db/managers/#django.db.models.Manager
> 
> in particolare a use_for_related_fields.

Condivido pienamente il suggerimento e la soluzione di Daniele. È il modo corretto di procede per rendere le cose pulite e facilmente gestibili.
In alternativa, se il tuo vincolo è a livello di modello e non solo a livello funzionale, potresti pensare di utilizzare l'attributo "limit_choices_to" del ForeignKey field [https://docs.djangoproject.com/en/1.5/ref/models/fields/#django.db.models.ForeignKey.limit_choices_to]

Bw, considera che OneToOneField estende ForeignKey, per cui l'attributo "limit_choices_to" è altrettanto supportato (anche se nella Doc mi pare non sia riportato esplicitamente :-)

m2c

--
valerio




Maggiori informazioni sulla lista Python