Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การเพิ่มการแปลไปยังอินสแตนซ์ของโมเดลใน Django


ในบทความนี้ เราจะมาเรียนรู้วิธีสร้างการแปลในกรณีต่างๆ บางครั้ง คุณอาจต้องบันทึกข้อมูล เช่น ID ชื่อ เครื่องหมายคำพูด บรรทัด ฯลฯ คุณอาจต้องแสดงข้อมูลนั้นในภาษาต่างๆ สำหรับสิ่งนั้น คุณต้องทำสิ่งต่าง ๆ เกี่ยวกับฐานข้อมูลมากมาย แต่วันนี้ฉันจะแสดงวิธีรับผลลัพธ์เดียวกันในการตั้งค่าเพียงไม่กี่บรรทัด

สร้างโปรเจ็กต์ Django และแอพ ตั้งค่า url และทำสิ่งพื้นฐานบางอย่าง เช่น เพิ่มแอปใน INSTALLED_APPS

สร้างแบบจำลอง ในที่นี้ เราไม่เกี่ยวอะไรกับ views.py, urls.py . มากนัก หรือไฟล์ html ใดๆ เรามีเฉพาะ settings.py, admin.py,models.py และ URL ของผู้ดูแลระบบ

ตัวอย่าง

ติดตั้ง django-klingon แพ็คเกจ −

pip install django-klingon

ใน settings.py เพิ่มสิ่งนี้ −

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

ที่นี่ เราทำการตั้งค่าพื้นฐานของการเพิ่ม คลิงออน เป็นแอปในโครงการและเรากำหนดภาษาอังกฤษเป็นภาษาเริ่มต้น

สร้างโมเดลแบบนี้ −

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 shell และทำสิ่งนี้เพื่อเพิ่มการแปลสำหรับวัตถุที่สร้างขึ้นใหม่ -

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','お元気ですか')

ตอนนี้คุณสามารถดูวัตถุการแปลที่สร้างขึ้น เห็นได้ชัดว่าคุณสามารถเพิ่มสิ่งนี้ผ่าน views.py

ที่ https://127.0.0.1/admin/

การเพิ่มการแปลไปยังอินสแตนซ์ของโมเดลใน Django