【发布时间】:2015-09-11 21:24:13
【问题描述】:
我正在尝试在 MultipleChoiceField 中使用自定义 CHOICE。我可以保存所有内容,但不能保存员工。
models.py
class Employee(models.Model):
employee_id = models.CharField(max_length=20, unique=True)
def __str__(self):
return '%s' % self.employee_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
forms.py
class TaskCreateForm(forms.ModelForm):
CHOICES = (
('123', 'Adam'),
('321', 'John'),
('666', 'Lucy'),
)
employee = forms.MultipleChoiceField(choices=CHOICES, required=True)
def __init__(self, custom_choices=None, *args, **kwargs):
super(TaskCreateForm, self).__init__(*args, **kwargs)
if custom_choices:
self.fields['employee'].choices = custom_choices
class Meta:
model = Task
所以基本上我添加了custom_choices,因为我想在MultipleChoiceField 中显示员工姓名('Adam', 'John' ,'Lucy') 并保存他们的
employee_id('123','321', 666')。
views.py
class TaskCreateView(CreateView):
model = Task
form_class = TaskCreateForm
template_name = "task/create.html"
def form_valid(self, form):
self.object = form.save()
return redirect('/task_page/')
我可以在我的页面上看到表格,我可以选择员工,但employee_id 没有保存。仅保存其他字段 task 和 comment。
更新说明:
我的模型中没有名字。我只想显示employee_id 的自定义 名称。
这就是我需要 ('123','Adam') 的原因 - 我想保存 '123' 但以我的形式显示 'Adam'
【问题讨论】:
标签: django django-models django-forms django-views