Когда пользователи панели администратора получают разрешения на редактирование, невозможно выбрать страны, к которым они имеют доступ. В моей базе данных есть несколько стран, и пользователь с указанным разрешением 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)