2015-05-12 20 views
6

Bir alanın seçimlerini, iki sütun, 'share_holder' ve 'distributor' değerlerini kontrol ederek sınırlamaya çalışıyorum. Bunlardan biri doğruysa, o seçimi istiyorum."veya" koşuluyla birden çok alan için Django limit_choices_to

Aşağıdaki sürümde, yalnızca her iki koşulu da karşılayan seçenekler var ('share_holder': True AND 'distributor': True). Ancak, ('share_holder': True OR 'distributor': True) için seçimlere ihtiyacım var, ancak bunun için seçenekler istiyorum.

cevap

11

Bunu başarmak için Q nesnelerini kullanabilirsiniz. ForeignKey.limit_choices_to

+0

teşekkür çok üzerinde

from django.db.models import Q limit_choices_to=Q(share_holder=True) | Q(distributor=True) 

Resmi dokümanlar, mükemmel çalıştı. Aynı nesnenin diğer alanlarına dayalı olarak bir alanı filtrelemek için Q nesneleri kullanılabilir. Örneğin, ilk alan değeri seçildikten sonra ("hayvanlar" gibi), o zaman ikinci alanda sadece canlıların değil, yalnızca hayvanların listesini göstermek istiyorum. –

+0

Q nesneleri karmaşık aramalar için gerçekten güçlüdür. Maalesef gereksinimi anlayamadım. Eğer bana biraz detay anlatırsan, ben queryset'i kurmaya çalışacağım. – moonstruck

+0

nesnesinin, product_class ve product_name alanlarına sahip class product() gibi bir şey olduğunu varsayalım. Kullanıcı ürün sınıfı değerini seçtikten sonra, ürün_adının seçimleri seçilen ürün sınıfı tarafından filtrelenmelidir. –

İlgili konular