【问题标题】:Django many-to-many on existing form现有表单上的 Django 多对多
【发布时间】:2024-05-22 06:05:02
【问题描述】:

我有 2 个表,WorkingHoursEmployee,在 Employee 我定义 workingHours = models.ManyToManyField(WorkingHours)。 我的EmployeeWorkingHours 有一个指向User 的外键。

现在我有一些用于添加工作时间的表单(在某些用户下),我想在现有表单上添加用户可以在他的Employees 之间进行多项选择。

所以我有现有的表单,该用户可以添加WorkingHours,现在我想添加一个选项,他可以在他的Employees 之间进行选择。 现在实现了只为某些用户添加工作时间,我想添加一个选项来在他的员工之间进行选择,我不知道如何做到这一点。

所以,为了更好地理解,我有一个用户,他有WorkingHours,我想添加该用户可以选择哪个Employee 在这个WorkingHours 上“工作”。如果所有字段都未选中,我想申请所有Employees WorkingHour

我希望它不要太复杂,如果是我会尝试在 cmets 中解释更多。

我正在处理现有项目,所以我不想更改很多代码。

感谢

【问题讨论】:

  • 抱歉,这里没有具体的问题。也许您可以准确解释问题/查询是什么?
  • 我编辑了帖子,请您再看一遍好吗? :) 我希望你现在能看到问题。

标签: python django django-models django-forms many-to-many


【解决方案1】:

我想我理解了基本问题。您需要一个包含与该用户关联的员工的多项选择字段。

查看here 了解一些详细信息/示例。

基本上你想要这样的东西,这个例子并不能做所有事情,但我希望这是一个开始。

class SimpleForm(forms.Form):
    employees = forms.MultipleChoiceField(required = False, widget=forms.SelectMultiple)

def __init__(self, *args, **kw)
    user = kw.pop('user') # you need to pass user to into this function as a kw argument
    super(SimpleForm, self).__init__(*args, **kw)
    # this asssumes the user as a field (or related field reference) to employees
    # either way somehow you need to execute a query which gets the users employees.
    self.fields['employees'].choices = user.employees.all()

def save(self, *args):
    # if employees is empty set them all to selected

【讨论】:

  • 我会试试的,然后告诉你:)