2010-06-17 13 views
11

İki farklı ekip arasındaki (iki farklı grup tarafından yönetici arayüzünde temsil edilen) etkileşimi takip eden bir veri tabanım var. Bazı alanlar için, Kullanıcı veritabanına bir yabancı anahtarım var ve açılan kişileri yalnızca belirli gruplarla sınırlamak istiyorum.Yabancı anahtarın kısıtlamalarla kısıtlanması nasıl engellenir?

Herhangi bir öneri varsa, bu çok takdir edilecektir!

cevap

16

limit_choices_to adlı kullanıcıyı arıyor.

+0

Cevabınız için teşekkürler! Ancak, kullanıcı grupları ilişkisinin django yöneticisinde farklı tablolarda bulunduğunu düşünüyorum, bu durumda nasıl filtreleyebilirim? – FurtiveFelon

+0

Q' nesneleriyle. 'Q (group__icontains = u'user ')' –

+0

Hey Ignacio, Bunu nasıl yapacağım konusunda hala biraz kafam karışık. Yetkilendirme modülünün kodunu daha sonra kazandıktan sonra, grupların aşağıdaki gibi Kullanıcı sınıfında tanımlandığını buldum: group = models.ManyToManyField (Group, verbose_name = _ ('groups'), blank = True,). Sorgu Kullanıcılar'a dayanmaktadır, bu yüzden söz konusu geçerli kullanıcının "Hukuk" grubunda olup olmadığını kontrol etmek istiyorum. Grup modelinin bir kimliği olduğundan, adın doğrudan Kullanıcıda saklanmadığını unutmayın. Tüm yardımlarınız için çok teşekkür ederim! – FurtiveFelon

2

Form alanı için underlaying Sorgu Kümesi değiştirebilirsiniz: How do I filter ForeignKey choices in a Django ModelForm?

+0

Görünümde yapılması gerektiği söyleniyor, ancak görünüme nasıl erişeceğimi bilmiyorum, erişebildiğim tek şey model sınıfı ve modeladmin sınıfı. Herhangi bir özel yön önerisi büyük ölçüde takdir edilecektir! – FurtiveFelon

+0

Özel bir form kullanmalı ve formun '__init__' içinde yapmalısınız! def __init __ (self, * args, ** kwargs): süper (MyForm, self) .__ init __ (* args, ** kwargs) self.fields ["kullanıcı"]. Queryset = User.objects.filter (. ..) –

İlgili konular