Django admin中的原始id字段和许多
我希望在管理中的多个关系上使用原始\u id\u字段,并希望每个相关对象显示在其自己的行上(而不是在单个字段中使用逗号分隔的列表,这是默认行为)。下面是在野外发现的例子,我似乎应该能够做到这一点:Django admin中的原始id字段和许多,django,django-admin,django-orm,Django,Django Admin,Django Orm,我希望在管理中的多个关系上使用原始\u id\u字段,并希望每个相关对象显示在其自己的行上(而不是在单个字段中使用逗号分隔的列表,这是默认行为)。下面是在野外发现的例子,我似乎应该能够做到这一点: # models.py class Profile(models.Model): ... follows = models.ManyToManyField(User,related_name='followees') # admin.py class FollowersInline(
# models.py
class Profile(models.Model):
...
follows = models.ManyToManyField(User,related_name='followees')
# admin.py
class FollowersInline(admin.TabularInline):
model = Profile
raw_id_fields = ('follows',)
extra = 1
class ProfileAdmin(admin.ModelAdmin):
search_fields = ('user__first_name','user__last_name','user__username',)
inlines = (FollowersInline,)
admin.site.register(Profile,ProfileAdmin)
但这会产生错误:
<class 'bucket.models.Profile'> has no ForeignKey to <class 'bucket.models.Profile'>
没有要删除的外键
我不清楚我做错了什么。谢谢您的建议。看起来您为您的
InlineAdmin设置了错误的模型
因为您定义的追随者模型是User
,而不是Profile
看看这些,我想你应该试试:
class FollowersInline(admin.TabularInline):
model = Profile.follows.through
及
看起来您为您的InlineAdmin
因为您定义的追随者模型是User
,而不是Profile
看看这些,我想你应该试试:
class FollowersInline(admin.TabularInline):
model = Profile.follows.through
及
谢谢Arie,但这给了我:“FollowersInline.raw_id_fields”指的是模型“Profile_follows”中缺少的字段“follows”。以下内容作为概要文件中的一个字段存在。嗯,可能我还没有完全理解您要做的事情:您正在尝试关联关注者和概要文件,对吗?据我所知,您应该能够在InlineAdmin
上ommitraw\u id\u fields=('follows',)
。然后,您可以使用内联表单将关注者
(用户
)关联到配置文件
。关注者不是单独的模型-“Followers”是配置文件模型上m2m字段的名称。我可以从ProfileAdmin中省略follows,但是当我向ProfileAdmin添加inlines=(FollowersInline,)时,我会得到上面描述的两个错误之一,这取决于我是使用“model=Profile”还是“model=Profile.follows.through”。谢谢。我指的是追随者a.k.a.用户(因为这是遵循的模型)。根据我的理解,匹配raw_id字段并使用Profile.follows.through应该可以工作。但事实并非如此,我只能希望有人能想出更好的主意。祝你好运谢谢Arie,但这给了我:“FollowersInline.raw_id_fields”指的是模型“Profile_follows”中缺少的字段“follows”。以下内容作为概要文件中的一个字段存在。嗯,可能我还没有完全理解您要做的事情:您正在尝试关联关注者和概要文件,对吗?据我所知,您应该能够在InlineAdmin
上ommitraw\u id\u fields=('follows',)
。然后,您可以使用内联表单将关注者
(用户
)关联到配置文件
。关注者不是单独的模型-“Followers”是配置文件模型上m2m字段的名称。我可以从ProfileAdmin中省略follows,但是当我向ProfileAdmin添加inlines=(FollowersInline,)时,我会得到上面描述的两个错误之一,这取决于我是使用“model=Profile”还是“model=Profile.follows.through”。谢谢。我指的是追随者a.k.a.用户(因为这是遵循的模型)。根据我的理解,匹配raw_id字段并使用Profile.follows.through应该可以工作。但事实并非如此,我只能希望有人能想出更好的主意。祝你好运