0
我有模特人 - 从另一个数据库 我将所有person_id
复制到custom_id
。在Form ChoiceField中显示全名,但保存ID的
models.py
class Employee(models.Model):
custom_id = models.CharField(max_length=20, unique=True)
@property
def person(self):
return Person.objects.get(person_id='%s' % self.custom_id)
def __str__(self):
return '%s' % self.custom_id
class Task(models.Model):
employee = models.ManyToManyField(Employee, blank=True, null=True)
task = models.CharField(max_length=100)
comment = models.CharField(max_length=200)
def __str__(self):
return '%s' % self.task
我我的方法添加到person()
员工这让我访问其他对象模型在另一个数据库:所以基本上,当我在shell中键入此
:
Employee.objects.get(custom_id='123').person.full_name
u'Adam Dylan'
我有一个ModelForm
其中使用ModelMultipleChoiceField
forms.py
class TaskCreateForm(forms.ModelForm):
employee = forms.ModelMultipleChoiceField(queryset=Employee.objects.all())
class Meta:
model = Task
但Employee.objects.all()
返回一串custom_id年代。 我想要的形式是“Employee(..).person.full_name
”,但只保存custom_id's
。
我确切的代码。但是我得到这个错误 'MultipleObjectsReturned:get()返回多个Person - 它返回2!' – HereHere
这意味着有多于一个''Person'与Employee的''custom_id''匹配''。你应该清理你的数据,以便每个Employee都只有一个Person,或者决定使用哪一个(例如第一个),并使用filter()而不是' get()'': ''返回Person.objects.filter(person_id = self.custom_id).first()'' –
你是男人! – HereHere