Сайт администратора на Python со сквозным параметром
У меня была следующая модель
class UserGroup(models.Model):
name = models.CharField(max_length=255, unique=True)
users = models.ManyToManyField(User, blank=True)
def __str__(self):
return self.name
С моим Admin.py ниже, набор запросов работал на 100% (в основном показывая только пользователей в текущей группе и пользователей, не входящих в группу вообще )
class UserGroupAdmin(admin.ModelAdmin):
filter_horizontal = ('users',)
def formfield_for_manytomany(self, db_field, request=None, **kwargs):
if db_field.name == 'users':
object_id = request.resolver_match.kwargs.get('object_id')
kwargs['queryset'] = User.objects.filter(
Q(usergroup=None) | Q(usergroup=object_id)
)
return super().formfield_for_manytomany(db_field, request, **kwargs)
admin.site.register(UserGroup, UserGroupAdmin)
Вывод выглядел следующим образом
Это было замечательно, но я изменил свою модель, чтобы использовать параметр Through ниже.
class UserGroup(models.Model):
name = models.CharField(max_length=255, unique=True)
users = models.ManyToManyField(User, blank=True, through='UserToUserGroup')
def __str__(self):
return self.name
class UserToUserGroup(models.Model):
user = models.OneToOneField(User, on_delete=models.PROTECT)
user_group = models.ForeignKey(UserGroup, on_delete=models.CASCADE)
Теперь мой администраторский сайт выглядит так, как показано ниже.
Мне трудно добиться того, чтобы сайт администратора выглядел так же, как после внесения изменений в модель. Я все еще привыкаю к работе с сайтом администратора. Я попробовал несколько инлайнов, но безуспешно. Мне нужно использовать горизонтальный фильтр, чтобы он выглядел одинаково.