Необходимо изменить панель администратора для приложения пользователя - PullRequest
0 голосов
/ 13 марта 2020

Когда пользователи панели администратора получают разрешения на редактирование, невозможно выбрать страны, к которым они имеют доступ. В моей базе данных есть несколько стран, и пользователь с указанным разрешением c может сделать это в любой стране.

Я должен иметь возможность предоставить "Группам" и "Пользователям" доступ только к одной или нескольким странам [В настоящее время критерий выбора страны отсутствует], поэтому для каждого пользователя или типа пользователя, созданного на панели администратора, должен быть дополнительный выбор для данных страны базы данных, к которым он может получить доступ

Итак, как мне создавать модели в models.py и admin.py? Я совершенно новичок в Django.

Мой код для models.py

class MyUser(models.Model):
    COUNTRY_CHOICES = (
    ('SA', 'Saudi Arabia'),
    ('IN', 'India'),
    ('UAE', 'United Arab Emirates'),
    ('UK', 'United Kingdom'),
    ('KW', 'Kuwait')
)

    user = models.OneToOneField(User, on_delete=models.CASCADE)

    country_selection = MultiSelectField(choices=COUNTRY_CHOICES)

Для admin.py

from django.contrib import admin
from django.contrib.auth.models import User
from django.db import models
from .models import Guide, MyUser
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin



class GuideAdmin(admin.ModelAdmin):
    date_hierarchy = 'date'
    raw_id_fields = ("country",)
    list_display = ['en_title', 'country', 'date']
    search_fields = ['country__ISOCode', 'en_title']
    # readonly_fields = ('slug', 'preload_image', 'feature_image', 'images')
    ordering = ['-date']



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

class UserAdmin(BaseUserAdmin, admin.ModelAdmin):
    inlines = (UserInline, )


class MyUserAdmin(admin.ModelAdmin):
    list_display = ['user','country_selection']

admin.site.register(Guide, GuideAdmin)
admin.site.unregister(User)
admin.site.register(User, UserAdmin)
admin.site.register(MyUser, MyUserAdmin)
...