이제 Django를 사용하여 다국어 웹 사이트를 개발하고 있습니다. 우리는 우리 웹 사이트의 콘텐츠에 대해 다른 언어 버전을 가지고 있습니다. 예를 들어 게시물의 경우 영어와 스페인어 버전이 있습니다. 어떤 모델 디자인이 더 좋습니까?
class Post(models.Model):
user
title
detail
count_follower
...
orginal_language
date
class PostEspanish(models.Model):
post = models.ForeignKey(Post)
title
detail
그래서 우리는 스페인어 콘텐츠에 대한 모든 영어 컨텐츠와 PostEspanish에 대한 포스트를 사용 현재 우리는이 모델을 사용하고 있습니다. 누군가가 영어로 글을 쓰면 Post 모델에 넣고 PostEspanish 모델로 번역 된 글을 씁니다. 누군가가 스페인어로 게시물을 작성하면 먼저 Post 인스턴스를 만든 다음 PostEspanish 인스턴스를 만들고 PostEspanish에 내용을 넣습니다. 누군가이 스페인어 게시물을 번역하면 참조 게시물에 번역 된 게시물을 넣습니다.
다른 모델에 다른 언어 콘텐츠를 저장하는 것은 검색 사람이이 방법을 원하기 때문입니다. 그는 그것이 수색에 좋다고 말한다.
if language == 'English':
post = Post.objects.create(..., orginal_language='english')
else:
post = Post.objects.create(..., original_language='espanish')
PostEspanish.objects.create(post=post, ...)
및 번역 :
이 명확하게하기 위해, 예를 들어, 어떤 사용자가 게시물을 기록, 우리는 다음을 수행합니다post = Post.objects.get(id=id)
if post.orginal_language == 'english':
post = post.postespanish
#update post
post.save()
else:
#update post
post.save()
오늘 누군가가 말했다이 모델의 디자인은 정말 가난 . 그는 현재의 모델이 객체 지향적이지 못하다고 말했다.
class Post(models.Model):
user
count_follower
...
orginal_language
date
class PostContentEnglish(models.Model):
post = models.ForeignKey(Post)
title
detail
class PostContentEspanish(models.Model):
post = models.ForeignKey(Post)
title
detail
그래서 코드는 다음과 같이 될 것이다 : 여기에 그들이 그것을 할 방법이
if language == 'English':
post = Post.objects.create(..., orginal_language='english')
PostContentEnglish.objects.create(post=post,...)
else:
post = Post.objects.create(..., orginal_language='espanish')
PostContentEspanish.objects.create(post=post,...)
그러나 우리 대부분은이 두 가지 접근 방식 차이가 없다 생각했다. 그리고 그의 모델 디자인은 정말 나쁜 테이블을 하나 더 생성 할 것입니다.
그럼 어느 것이 더 낫다고 생각합니까?
다른 모델에 다른 언어 콘텐츠를 저장하는 것은 검색 사람이이 방법을 원하기 때문입니다. 그는 그것이 수색에 좋다고 말한다. – thoslin
영어로 된 테이블과 스페인어로 된 테이블을 가지고 모자를 쓰는 것이 성과에 도움이된다면 그는 틀 렸습니다. 열이있는 내용의 경우 단일 테이블을 사용하여 언어를 나타냅니다. –