Жанр для моделей в DJango - PullRequest
1 голос
/ 11 октября 2019

Я создаю сайт с Django, и у меня возникает проблема с администрацией сайта.

Когда я создаю новую модель, я могу назначить verbose_name для единственного и множественного числа в мета-классе, но я не нахожу никакой опции, которая позволяла бы мне определить, какой пол эта модель, то есть, является ли она женским (женский) или мужской (мужской).

Например, у меня есть модель города, которая на испанском языке будет Ciudad и будет женская . Затем, когда на сайте администратора я добавляю новую запись, появляется легенда Se añadió con éxito el ciudad , когда правильной вещью будет Se añadió con éxito la ciudad .

Я знаю, что это может быть проблемой перевода,

, но я предполагаю, что что-то должно указывать на переводы, что модель должна поставить el или la в зависимости от ситуации. может быть.

Кто-нибудь может мне помочь?

Ответы [ 2 ]

1 голос
/ 14 октября 2019

Спасибо. Я решил проблему, используя полученный ответ, и внес некоторые изменения. Поскольку у меня уже были созданы классы admin.ModelAdmin, я создал основной класс, который перезаписывает метод response_add, и я унаследовал от него мои классы ModelAdmin. Вот код на случай, если он обслуживает кого-то еще.

# admin_custom.py
from django.contrib import admin, messages
class ModelView(admin.ModelAdmin):

    def response_add(self, request, obj):
        msg = 'Registro añadido satisfactoriamente' # Generic message for male and female models
        self.message_user(request, msg, messages.SUCCESS)
        return self.response_post_save_add(request, obj)

# admin.py
from django.contrib import admin, messages
from .models import Pais, Ciudad, ...
from .admin_custom import ModelView
@admin.register(Pais) 
class PaisAdmin(ModelView):
    inlines = [CiudadesInline]

@admin.register(Ciudad) 
class CiudadAdmin(ModelView):
    list_display = ('nombre', 'pais')
    list_filter = ('pais',)
    inlines = [TeatrosInline, ArtistasInline]

...
0 голосов
/ 13 октября 2019

Одно решение, которое я могу предложить, - переписать метод, который генерирует сообщение. Сначала мы перезаписываем метод, который генерирует это сообщение: response_add

from django.contrib import admin, messages
class CityView(admin.ModelAdmin):
    def response_add(self, request, obj):
        #you can put your own code here to generate a message
        msg = 'Custom message'
        self.message_user(request, msg, messages.SUCCESS)
        return self.response_post_save_add(request, obj)

Затем мы указываем, что при создании города используется созданный нами пользовательский вид. Для этого в файле, где мы зарегистрировали модели на странице администратора, мы поместили следующее:

from .admin_custom import CityView # assuming the file is called admin_custom.py
admin.site.register(City, CityView)

Редактировать Для добавления всех сразу вы можете сделать следующее

from .admin_custom import CityView
from .models import *
models = (City, Class1, Class2)
admin.site.register(models, CityView)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...