Пытаясь добавить забаненного пользователя в таблицу, Django ADMIN - PullRequest
0 голосов
/ 03 мая 2018

У меня есть функция, которая запрещает пользователей в моем представлении модели пользователя-администратора. Но я не уверен, как добавить этого забаненного пользователя в модель Banned_User.

#Banning function
def ban_users(self, request, queryset):
    queryset.update(is_active = False)
    banned_user = Banned_User.objects.create(profile=profile)
    banned_user.save()
    self.message_user(request, "User banned")

def remove_ban(self, request, queryset):
    print(queryset)
    queryset.update(is_active = True)
    self.message_user(request, "Users ban has been lifted")

#Profile Admin view
class ProfileAdmin(admin.ModelAdmin):
    list_display = ('user', 'birth_date', 'sessions_played', 'total_reports')
    readonly_fields = (('sessions_played'),('birth_date'),('user'),('pref_server'),('teamwork_commends'),('skill_commends'),('sportsmanship_commends'),('communication_commends'),('discord_name'))#,'total_reports')

    def total_reports(self, obj):
        return Report.objects.filter(user_reported=obj).count()

admin.site.register(Profile, ProfileAdmin)

#User Admin View
class MyUserAdmin(UserAdmin):
    list_display = ('profileview','username', 'first_name', 'last_name' , 'email')
    readonly_fields = ('first_name' , ('last_name') , ('email') , ('username'))
    actions = ['ban', 'unban']
    ban = ban_users
    unban = remove_ban

    def profileview(self, instance):
        return instance.profile.user

admin.site.unregister(User)  
admin.site.register(User, MyUserAdmin)

(модель профиля имеет OneToOneField для пользователя)

Моя модель запрета использования выглядит следующим образом:

class Banned_User(models.Model):
    def __str__(self):
        return self.user.get_username

    profile = models.ForeignKey(
        'Profile',
        on_delete=models.PROTECT,
        blank=False,
        null=False,
        related_name='banned_profile'
    )

    report_reason = models.ForeignKey(
        'report',
        on_delete=models.PROTECT,
        blank=False,
        null=False,
        related_name='reason_banned',
    )

    date_banned = models.DateField(null=True, blank=False,)

текущие ошибки: имя «профиль» не определено , но я не уверен, что мой код для добавления в таблицу правильный в любом случае.

1 Ответ

0 голосов
/ 03 мая 2018
def ban_users(modeladmin, request, queryset):
    queryset.update(is_active = False)
    banned_user = Banned_User.objects.create(profile=request.user.profile)
    banned_user.save()
    self.message_user(request, "User banned")

def remove_ban(modeladmin, request, queryset):
    print(queryset)
    queryset.update(is_active = True)
    self.message_user(request, "Users ban has been lifted")

убедитесь, что верхние функции записаны в этом admin.py файле или импортируйте его

class MyUserAdmin(UserAdmin):
    list_display = ('profileview','username', 'first_name', 'last_name' , 'email')
    readonly_fields = ('first_name' , ('last_name') , ('email') , ('username'))
    actions = [ban, unban]

    def profileview(self, instance):
        return instance.profile.user

admin.site.unregister(User)  
admin.site.register(User, MyUserAdmin)

проверить изменения в функции inputs и действие ModelAdmin

...