如何在Django模型中存储模型元组的字段? [英] How to store field of tuples of models in Django models?
问题描述
每个翻译器可以翻译具有不同级别(技能)的多种语言。
我不知道如何为此设计模型。我的想法是为每个翻译器存储一些元组(语言,级别)的领域,所以模型翻译器将是:
class TranslatorProfile (models.Model):
user = models.OneToOneField(User,related_name ='userprofile')
date_of_birth = models.DateField(null = True,blank = True)
phone = models。 CharField(max_length = 40,null = True,blank = True)
IBAN = models.CharField(max_length = 40,null = True,blank = True)
created = models.DateTimeField(auto_now_add = True)
modified = models.DateTimeField(auto_now = True)
#这里是问题
languages = models.FieldOfModelTuples(Language,Level)
class级别(models.Model):
LEVEL_NAMES =(
('standard','Standard'),
('professional','Professional'),
#etc。
)
name = models.CharField(max_length = 40,choices = LEVEL_NAMES)
price_multiplier = models.FloatFiel d()
类语言(models.Model):
shortcut = models.CharField(max_length = 40)
name = models.CharField(max_length = 40)
def __str __(self):
return self.name
我会感谢任何建议如何解决这个问题(。 FieldOfModelTuples
当然不存在)。也许有一个更简单的方法来做到这一点。
我认为级别
应该是一个通过模型的字段,用于 TranslatorProfile
和语言
之间的多对多关系:
class TranslatorLanguage(models.Model):
translator = models.ForeignKey('app_name.TranslatorProfile')
language = models.ForeignKey('app_name.Language')
level = models.ForeignKey('app_name.Level')
class Meta:
unique_together =(('翻译者','语言'),)
这样可以查询每个翻译器
- 语言
对。可以通过以下方式简化翻译人员的语言:
#这里是PROBLEM
languages = models.ManyToManyField(语言,通过='TranslatorLanguage')
I'm working on a web for translators. I'm stucked on designing a structure of the data. So there is a model Translator, Language and Level. The price depends on Language and Level (Standard level multiplies the price 1x, Professional 1.5x etc.)
Each Translator can translate multiple languages with different levels (skills).
I can't figure out how to design models for this purpose. My idea is to store for each Translator some field of tuples (Language,Level) so the model Translator would be:
class TranslatorProfile(models.Model):
user = models.OneToOneField(User, related_name='userprofile')
date_of_birth = models.DateField(null=True,blank=True)
telephone = models.CharField(max_length=40,null=True,blank=True)
IBAN = models.CharField(max_length=40,null=True,blank=True)
created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True)
# HERE IS THE PROBLEM
languages = models.FieldOfModelTuples(Language,Level)
class Level(models.Model):
LEVEL_NAMES = (
('standard', 'Standard'),
('professional', 'Professional'),
#etc.
)
name = models.CharField(max_length=40, choices=LEVEL_NAMES)
price_multiplier = models.FloatField()
class Language(models.Model):
shortcut = models.CharField(max_length=40)
name = models.CharField(max_length=40)
def __str__(self):
return self.name
I would appreciate any advice how to solve this problem (.FieldOfModelTuples
does not exists of course). Maybe there is a simpler way to do this.
I think that Level
should be a field on a through-model for a many-to-many relationship between TranslatorProfile
and Language
:
class TranslatorLanguage(models.Model):
translator = models.ForeignKey('app_name.TranslatorProfile')
language = models.ForeignKey('app_name.Language')
level = models.ForeignKey('app_name.Level')
class Meta:
unique_together = (('translator', 'language'),)
this allows you to query all necessary properties for each Translator
-Language
pair. Access to a translator's languages can then be simplified via:
# HERE IS THE PROBLEM
languages = models.ManyToManyField(Language, through='TranslatorLanguage')
这篇关于如何在Django模型中存储模型元组的字段?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!