Inline on Foreignkey модуль дальше - PullRequest
1 голос
/ 22 марта 2012

У меня есть эти модели:

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.

Как я могу заставить эту работу работать без изменения моделей.

1 Ответ

0 голосов
/ 22 марта 2012

Грубая идея (не проверено): установите модель ForeignKey на UserProfile, но вместо первичного ключа укажите поле user_id Таким образом, вы будете иметь отношение к UserProfile с теми же значениями в базе данных, что и сейчас (User.id):

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