lightarhont
@lightarhont
python/php developer

Как добавить список из id пользователей в поле Django-Admin?

В системной таблице User, нужно хранить список из пользователей. Допустим поле будет CharField, Как заставить админку джанго вводить имена пользователей(в виде тэгов с именами пользователей), но сохранять, желательно как id?
На фронтэнде это проще, а тут нужно перелопатить кучу доков, если с этим не сталкивался...
Допустим даже если я понял как расширить/заменить саму таблицу User.
  • Вопрос задан
  • 464 просмотра
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@abogoyavlensky
Python Developer
Если правильно понял вопрос, то могу предложить такое решение.
Добавить на переопределенную модель пользователя, например, MyUser поле m2m на эту же модель:
from django.contrib.auth.models import AbstractUser
from django.db import models

class MyUser(AbstractUser):
    ...
    users = models.ManyToManyField('self', blank=True)


В Django>=2.0 добавлена возможность автокомплита для ForeignKey и ManyToMany полей в админке "из коробки". Для этого нужно добавить `autocomplete_fields` в админку модели, где нужно "поле с тегами" и "search_fields" - на модель, по которой будем искать связанную сущность. В данном случае это одна и таже модель:
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin as AuthUserAdmin
from django.utils.translation import ugettext_lazy as _

@admin.register(User)
class MyUserAdmin(AuthUserAdmin):
    ...
    fieldsets = AuthUserAdmin.fieldsets + ((_('Users'), {
        'fields': ('users', )
    }), )
    search_fields = ['first_name', 'last_name']
    autocomplete_fields = ['users']


UPD: Если версия Django<2.0, то в админке можно использовать отдельный пакет https://django-autocomplete-light.readthedocs.io/e...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы