Я пытаюсь использовать пользовательский CHOICE в MultipleChoiceField. Я могу спасти все, кроме сотрудников.Не удается сохранить ManyToMany с помощью MultipleChoiceField
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'
Эй, у меня есть '' AttributeError: объект 'module' не имеет атрибута 'EmployeeMultipleChoiceField''' PyCharm выделяет 'EmployeeMultipleChoiceField' в' TaskCreateForm' – HereHere
Вы должны изменить 'forms.EmployeeMultipleChoiceField' 'EmployeeMultipleChoiceField' – HereHere
Право. Спасибо! –