get_queryset нельзя менять у дефолтного менеджера, иначе вы потом в MyModel.objects.all() будете получать только отфильтрованные объекты. В других местах его менять можно и нужно.
Вы определитесь, какая вам нужна фильтрация. Если вам просто надо в админке юзеру только его посты показывать, то это не через менеджер делается, а вот так: http://stackoverflow.com/a/12354293
Это я уже сделал. Все работает, как надо. Только есть одно. НО!
Есть связанные объекты, и нужно показывать их выбор отфильтрованный, а не все что есть в базе. Понимаете?
class InvOffices(models.Model):
class Meta:
db_table = 'inv_offices'
verbose_name = u'Кабинет'
verbose_name_plural = u'Кабинеты'
ordering = ['location']
unique_together = (('name', 'location'),)
id = models.AutoField(u'№', primary_key=True)
name = models.CharField(u'Название', max_length=255)
location = models.ForeignKey(InvLocations, verbose_name=u'Локация')
class InvAssets(models.Model):
class Meta:
db_table = 'inv_assets'
verbose_name = u'Материальную ценность'
verbose_name_plural = u'Материальные ценности'
ordering = ['id']
index_together = [['number'], ]
id = models.AutoField(u'№', primary_key=True)
number = models.PositiveIntegerField(u'Инвентарный номер', unique=True)
office = models.ForeignKey(InvOffices, verbose_name=u'Кабинет')
group = models.ForeignKey(InvGroups, verbose_name=u'Группа')
model = models.CharField(u'Модель', max_length=255, null=True, blank=True)
Мне нужно давать выбор только определенной location
в зависимости от того, кто залогинился в админку.
Т.е. мне нужно показать только те офисы, которые есть в Локации, к которой приписан вошедший в админку пользователь.
Updated 16 Dec. 2015, 13:54 by SES.