Перевести одно поле модели в django
у меня есть эта модель:
class Notification(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE,null=True, blank=True)
date = models.DateTimeField(auto_now_add=True)
text = models.TextField(max_length=400,null=True, blank=True)
read = models.BooleanField(default=False)
объекты этой модели создаются автоматически в представлениях следующим образом
def payment_confirmation(request):
if request.method == 'POST':
form = paymentForm(request.POST)
if form.is_valid():
amount= float(form.cleaned_data['amount'])
form.save()
notify = Notification.objects.create(
user = request.user,
text = f"{amount} $ is added to your wallet",
)
trans = _('Recharge Completed successfully')
messages.success(request,trans)
return redirect('my_wallet')
return HttpResponse("completed")
Я смог перевести сообщения и статические страницы, но я не смог найти способ перевести это текстовое поле уведомления Я просмотрел несколько библиотек, но они, похоже, переводят только название поля verbose_name, но не значение
Попробуйте это:
def payment_confirmation(request):
if request.method == 'POST':
form = paymentForm(request.POST)
if form.is_valid():
amount= float(form.cleaned_data['amount'])
form.save()
notify = Notification.objects.create(
user = request.user,
text = _("{} $ is added to your wallet").format(amount),
)
trans = _('Recharge Completed successfully')
messages.success(request,trans)
return redirect('my_wallet')
return HttpResponse("completed")
Итак, я добавил еще одно поле в свою модель
text_ar = models.TextField(max_length=400,null=True, blank=True)
и добавил это поле в мое представление с переведенным текстом вручную
def payment_confirmation(request):
if request.method == 'POST':
form = paymentForm(request.POST)
if form.is_valid():
amount= float(form.cleaned_data['amount'])
form.save()
notify = Notification.objects.create(
user = request.user,
text = f"{amount} $ is added to your wallet",
text_ar = f" دولار الى محفظتك {amount} تمت اضافة"
)
trans = _('Recharge Completed successfully')
messages.success(request,trans)
return redirect('my_wallet')
return HttpResponse("completed")
и простой оператор if в шаблоне для проверки текущего языка и отображения правильного текста
{% get_current_language as current_language%}
{% if current_language== 'en' %}{{ notify.text }}{% elif current_language == 'ar' %}{{ notify.text_ar }}{% endif %}
работает нормально, но я не чувствую, что это правильный способ сделать это