Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Django에서 모델 인스턴스에 번역 추가

<시간/>

이 기사에서는 모든 인스턴스에 대한 번역을 만드는 방법을 배울 것입니다. 때로는 ID, 이름, 따옴표, 줄 등과 같은 데이터를 저장해야 할 수도 있습니다. 해당 데이터를 다른 언어로 렌더링해야 할 수도 있습니다. 이를 위해서는 많은 데이터베이스 작업을 수행해야 하지만, 오늘은 몇 줄의 설정으로 동일한 결과를 얻는 방법을 보여 드리겠습니다.

Django 프로젝트와 앱을 만듭니다. URL 설정 INSTALLED_APPS에 앱 추가와 같은 몇 가지 기본적인 작업을 수행합니다.

모델을 만듭니다. 여기서는 views.py, urls.py와 별로 관련이 없습니다. 또는 모든 html 파일. settings.py, admin.py,models.py에 대한 작업만 있습니다. 및 관리자 urlpoint.

예시

django-klingon 설치 패키지 -

pip install django-klingon

settings.py에서 이것을 추가하십시오 -

INSTALLED_APPS += ['klingon']
KLINGON_DEFAULT_LANGUAGE = 'en'

여기서는 klingon을 추가하는 기본 설정을 수행합니다. 프로젝트에서 앱으로 지정하고 영어를 기본 언어로 정의합니다.

다음과 같은 모델을 만드십시오 -

from django.db import models
from klingon.models import Translatable

# add translatable
class TeacherData(models.Model,Translatable):
   name=models.CharField(max_length=100)
   # first3 simple fields
   ClassTeacherOF=models.CharField(max_length=100)
   Salary=models.CharField(max_length=100)
   a_simple_word=models.CharField(max_length=100)
   # define field that will be translated
   translatable_fields = ('a_simple_word')

여기서는 단순히 모델을 만들었습니다. 여기에서 주목해야 할 점은 번역이 필요한 필드를 알려주고 다른 테이블에 있는 번역된 객체를 참조하는 번역 가능한 필드를 생성했다는 것입니다.

admins.py에서 다음 코드를 추가하십시오 -

from django.contrib import admin
from .models import TeacherData
from klingon.admin import TranslationInline, create_translations

class TeacherAdmin(admin.ModelAdmin):

   inlines = [TranslationInline]
   actions = [create_translations]

admin.site.register(TeacherData,TeacherAdmin)

여기에서 관리자 URL에 모델을 추가했습니다. 및 kligon 추가 관리자에서 번역 참조.

이제 모든 작업이 완료되었습니다. 출력을 확인해보자.

출력

Python 셸을 실행하고 새로 생성된 객체에 대한 번역을 추가하려면 다음을 수행하십시오 -

In [1]: from formhandlingapp.models import *
In [2]:
data=TeachertData.objects.create(name="ama4",ClassTeacherOF="
10",Salary="33322",a_simple_word="how are you")
In [3]: data.set_translation('jp',
'a_simple_word','お元気ですか')

이제 생성된 번역 개체를 볼 수 있습니다. 분명히 view.py를 통해 추가할 수 있습니다.

https://127.0.0.1/admin/

에서

Django에서 모델 인스턴스에 번역 추가