使用Django的ManyToManyField和预定义的中间模型

时间:2010-11-23 14:28:57

标签: django many-to-many

以下是我的模特:

class Groups(models.Model):    
    group_id = models.AutoField(primary_key=True)
    group_name = models.CharField(max_length=20,db_index=True)
    #Some other fields
    admins = models.ManyToManyField(Users, through='GroupAdmin')

class Users(models.Model):
    user_id = models.AutoField(primary_key=True)
    #Some other fields...
    name_text = models.CharField(max_length=20)

class GroupAdmin(models.Model):
    group_admin_id = models.AutoField(primary_key=True)
    user = models.ForeignKey(Users)
    group = models.ForeignKey(Groups)

然后我将ModelAdmin定义为

class GroupAdminAdmin(admin.ModelAdmin):
    filter_horizontal = ['user']

admin.site.register(GroupAdmin, GroupAdminAdmin)

由于某些原因,我仍然无法弄清楚,每当我尝试使用此功能时,我的网页上都会出现以下错误。

ImproperlyConfigured at /admin/mysite
'GroupAdminAdmin.filter_horizontal[0]' must be a ManyToManyField.

我做错了什么?

1 个答案:

答案 0 :(得分:0)

您无法在ForeignKey上使用过滤器水平小部件(这几乎没有任何意义,因为它只能引用一个对象,而小部件的主要目标是轻松选择多个对象)。 您可以在Groups字段admins的管理员处使用该字段,也可以在其中使用内联管理员,以便轻松创建新的Users个对象。