2012-03-22 26 views
1

我有這些模型:在線上FOREIGNKEY模塊進一步

class UserProfile(models.Model): 
    user = models.OneToOneField(User) 
    #etc 

class Organization(models.Model): 
    users = models.ManyToManyField(User, through=OrganizationUser, verbose_name=_('users')) 
    #etc 

class OrganizationUser(models.Model): 
    organization = models.ForeignKey('Organization') 
    user = models.ForeignKey(User) 

我想說明的組織與在線的用戶:

class UserOrganizationsInline(admin.TabularInline): 
    model = OrganizationUser 

class UserProfileAdmin(admin.ModelAdmin): 
    inlines = [UserOrganizationsInline] 

admin.site.register(UserProfile, UserProfileAdmin) 

的錯誤信息是:

<class 'customer.models.organization.OrganizationUser'> has no ForeignKey to <class 'customer.models.userprofile.UserProfile'> 

我知道爲什麼:組織有ForeignKey auth.User而不是modes.UserProfile。

我如何在不更改模型的情況下做到這一點。

回答

0

粗糙的想法(未經測試):將ForeignKey設置爲UserProfile模型,但反映user_id字段而不是主鍵。因此,您將與數據庫中的UserProfile有相同的數值(User.id):

class OrganizationUser(models.Model): 
    user = models.ForeignKey(UserProfile, to_field='user_id')