我正在试图弄清楚如何正确创建一个必须具有两个属性(模型)的模型,并且它应该满足某些条件。
因此模型称为Job
。
Job
代表购买从一种语言(模型Language
)到另一种语言(模型Language
)的翻译。
每个Job
必须包含1个language_from
属性和1个language_to
属性。
我的旧模特:
class Language(models.Model):
shortcut = models.CharField(max_length=40)
name = models.CharField(max_length=40)
def __str__(self):
return self.name
class Job(models.Model):
customer = models.ForeignKey(User, related_name='orders')
translator = models.ForeignKey(User, related_name='jobs',null=True)
price = models.FloatField(null=True,blank=True)
language_from = # Didn't know what to put here
language_to = # Didn't know what to put here
def __str__(self):
return '{}: {}'.format(self.customer,)
我正在寻找一种如何使它工作的方法,我虽然关于一些ManyToOne
字段,但我意识到没有这样的字段。所以我一直建议用这种方式重建我的模型:
Job中没有
language_from
和language_to
属性。 模型to
中将有from
和Language
个属性 将是ForeignKey
s。
因此Job
不会有language_from/to
个属性,而不是Language
模型中的属性:
class Language(models.Model):
shortcut = models.CharField(max_length=40)
name = models.CharField(max_length=40)
job_from = models.ForeignKey('Job',related_name='language_form',null=True)
job_to = models.ForeignKey('Job',related_name='language_to',null=True)
def __str__(self):
return self.name
这种方式可能会正常工作,但有很多问题。
language_form
和language_to
JobCreationForm
时出现问题,因为我无法在language_from/to
class Meta:
字段
class JobCreationForm(forms.ModelForm):
description = forms.CharField(widget=forms.Textarea(attrs={'placeholder': 'Specification'}))
file = forms.FileField()
class Meta:
model = Job
fields = (
'language_from','language_to', 'description', 'file', 'specialist'
)
异常值: 为作业指定的未知字段(language_from,language_to)
有人知道我该怎么办?
答案 0 :(得分:0)
首先,您不能在字段中使用相关名称()。 所以改变
fields = (
'language_from','language_to', 'description', 'file', 'specialist'
)
进入
fields = (
'job_from','job_to', 'description', 'file', 'specialist'
)
接下来,如果你想为每份工作提供一种语言来自&语言,这些是必填字段,所以你可以这样做:
job_from = models.ForeignKey('Job',related_name='language_form')
job_to = models.ForeignKey('Job',related_name='language_to')
({{3}})