Py学习  »  问与答

[精华] 请问一下,model中的ManyToManyFields,在admin中怎么筛选数据?

hls_hh • 12 年前 • 11824 次点击  

大家好,请教大家一个问题, 我在model中定义有这样定义

class Equipment(models.Model):
    pid = models.CharField(max_length=32, blank=False, verbose_name=_(u'PID'))
    type = models.ForeignKey(EquipmentType, blank=False, verbose_name=_(u'设备类型'))
    area = models.ManyToManyField(Area, blank=False, verbose_name=_(u'设备区域'))
    mac = models.CharField(max_length=32, blank=False, verbose_name=_(u'MAC'))

class Meta:
    verbose_name = _(u'设备信息')
    verbose_name_plural = verbose_name

def __unicode__(self):
     return _(u'设备:%(pid)s') % {'pid':self.pid}

这样我在使用admin中添加数据的时候,会将Area中的数据列出来,供我选择,但现在的情况是,我需要根据用户的权限,去判断,只显示Area中的部分数据。我理解的admin.py中添加queryset(如下面程序),是用来筛选整个 Equipment的,

 def queryset(self):
    qs = super(UserAreaPermissionAdmin,self).queryset()
    if self.request.user.is_superuser:
        return qs
    else:
        return qs.filter(user = self.request.user)

但我现在需要的是admin界面中添加Equipment的时候,界面中提供的area选项,是我筛选过的,不知道在哪里设置,请大家指教,谢谢!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/100
 
11824 次点击  
文章 [ 7 ]  |  最新文章 12 年前