значение языка по умолчанию переопределяет поле перевода в admin - PullRequest
0 голосов
/ 12 июня 2019

Я использую перевод модели Django для мультиязычного сайта (английский (по умолчанию), арабский, французский), проблема в том, что при сохранении данных в администраторе django по умолчанию переопределяются поля арабского и французского перевода.Но в базе данных представлено реальное значение.

Моя модель: plan / models.py


class operators(models.Model):
    country = models.ForeignKey(Country, on_delete=models.CASCADE)
    operator = models.CharField(max_length=100, null=True, blank=True)
    image = models.ImageField(verbose_name=_('Operator Logo'), max_length=255,null=True,blank=True)

    class Meta:
        verbose_name = 'Operator'
        verbose_name_plural = 'Operators'
        db_table = 'operator'

    def __str__(self):
        return self.operator

plan / translation.py:

@register(operators)
class OperatorsTranslationOptions(TranslationOptions):
    fields = ('operator',)

plan / admin.py:

class OperatorAdmin(admin.ModelAdmin):
    list_display = ('operator', 'country')
.
.
.
admin.site.register(operators, OperatorAdmin)

settings.py:


INSTALLED_APPS = [
    'modeltranslation',
.
.
.
'plan',

]
.
.
.
LANGUAGES = (
    ('en', gettext('English')),
    ('ar', gettext('Arabic')),
    ('fr', gettext('French')),

)
.
.
MODELTRANSLATION_TRANSLATION_FILES = (

    'plan.translation',


)
MODELTRANSLATION_DEBUG = True

Ниже приведено значение базы данных

planbaker=# select * from operator;
 id |  operator  |         image         | country_id | operator_ar  | operator_en | operator_fr 
----+------------+-----------------------+------------+--------------+-------------+-------------
  1 | airtel-ind | pb_Zu2y9BE.jpeg       |          1 |              |             | 
  3 | aircel     | 360_360_1_vsXSDEo.JPG |          2 | ايرتل        | aircel      | 
  2 | aircel-sa  | 352_hQ4TZVq.jpeg      |          2 | زين السعودية | aircel-sa   | aircel-sa

Но в Admin все поля имеют значение оператора только на английском языке.Может кто-нибудь сказать, пожалуйста, где я ошибся?Я пробовал и updte_translation_fields и sync_translation_fields, но не помог

1 Ответ

0 голосов
/ 12 июня 2019

Попробуйте использовать modeltranslation.admin.TranslationAdmin вместо ModelAdmin для вашего OperatorAdmin класса.

Чтобы иметь возможность редактировать переводы через приложение django.contrib.admin, вам нужно зарегистрировать специальный класс администратора для переведенных моделей. Административный класс должен быть производным от modeltranslation.admin.TranslationAdmin, который делает некоторые патчи для всех ваших моделей, зарегистрированных для перевода.

https://django -modeltranslation.readthedocs.io / ен / последний / admin.html

...