2014-07-22 145 views
0

我加一个ManyToManyField到我的用户配置文件:过滤器管理员显示用户

class MyUser(models.Model): 
    user = models.OneToOneField(User) 
    news_letters = models.ManyToManyField(news_letter) 

,并与我的用户管理员替换:

class UserInline(admin.StackedInline): 
    model = MyUser 
    can_delete = False 
    verbose_name_plural = 'MyUser' 


# Define a new User admin 
class UserAdmin(UserAdmin): 
    inlines = (UserInline,) 


admin.site.unregister(User) 
admin.site.register(User, UserAdmin) 

我在我的Django管理news_letter模型,每个用户都可以看到django admin中的所有news_letter记录,我只想为MyUser.news_letters中的特定用户显示这样的记录。

我该怎么做?

+0

我不会推荐给你的用户访问Django管理员。有了更多的代码,你可以创建一些视图来允许用户订阅/取消订阅等。如果你需要它,这里有一个解决方案:http://stackoverflow.com/questions/2952626/user-based-model -instances-filtering-in-django-admin – arocks

+0

谢谢你的回答。 – user3726821

+0

@ user3726821如果我的答案解决了您的问题,请确认。谢谢! –

回答

0

您必须在Django中使用身份验证。这里是link

首先,您必须创建一个可访问'news_letter'的组。其次,将特定用户添加到该组中。最后但并非最不重要的是,您可能必须为不同的用户制作不同的视图。希望这可以帮助。