0
我目前有三類User
,UserProfile
和Vendor
。 User
是來自from django.contrib.auth.models import User
的內置Django。另外兩個是如下(Django)如何將Limit_choices_設置爲ManyToManyField指向的另一個類?
這裏是UserProfile
class UserProfile(models.Model) :
TYPE_CHOICES = (
('t', 'tenant' ),
('m', 'property manager'),
('o', 'property owner' ),
('v', 'vendor' ),
('w', 'web user' ),
('x', 'other' ),
)
user = models.ForeignKey(User, unique = True)
user_type = models.CharField(max_length = 1, choices = TYPE_CHOICES, default = 't')
User.profile = property(lambda u : UserProfile.objects.get_or_create(user = u)[ 0 ])
這裏是Vendor
class Vendor(models.Model) :
def __unicode__(self) :
return self.name
name = models.CharField(max_length = 135)
users = models.ManyToManyField(User, null = True, blank = True)
我想限制Vendor.users只User
其UserProfile.user_type
是vendor
。
如何使用limit_choices_to
。我可以這樣做......
users = models.ManyToManyField(User, null = True, blank = True, limit_choices_to = { UserProfile.objects.filter(user = self.users).user_type : 'm' })
我知道上面的代碼將拋出一個錯誤,但希望你能看到我想要做的事。
在此先感謝!
您是否嘗試過limit_choices_to = {'profile__user_type':'m'}?這將更適合limit_choices_to的工作方式。 – Arthur 2012-03-14 23:39:50