我目前有三个课程User
,UserProfile
和Vendor
。 User
是来自from django.contrib.auth.models import User
的内置Django。其他两个如下
以下是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
的{{1}}。
如何使用limit_choices_to
。我能做点像......
vendor
我知道上面的代码会引发错误,但希望你能看到我正在尝试做的事情。
提前致谢!
答案 0 :(得分:1)
我能够用
做到这一点manager = models.ForeignKey( User, related_name = 'manager', limit_choices_to = { 'userprofile__user_type' : 2 } )
其中2是user_type_id
类中属性管理器的主键(UserType
)。