【发布时间】:2020-11-22 18:29:15
【问题描述】:
我有 2 个应用程序,2 个表单,表单 1 中的复选框取决于存储在模型 2 中的值(通过 form2)。 问题是,当我在模型 2(表单 2)中添加一个新对象并转到表单 1 时,复选框不会更新。
我已尽我所能,请让我知道我做错了什么,以及是否有办法做到这一点。
如果是 form-1,则表单字段取决于 QueueStatusModel(不同的应用程序)中存在的“queue_names”的不同值
class NewInvestigatorForm(forms.ModelForm):
queues_queryset = QueueStatusModel.objects.order_by().values('queue_name').distinct()
queue_name_list = []
for i in queues_queryset:
x = i.get("queue_name")
queue_name_list.append( (x,x) )
active_qs = forms.MultipleChoiceField(
choices = queue_name_list,
widget = forms.CheckboxSelectMultiple,
)
class Meta:
model = PriorityModel
fields = [
'login',
'core',
'active_qs',
'priority'
]
这是 form-2,我在其中添加了一个新的“queue_name”:
class AddNewQueue(forms.ModelForm):
queue_name = forms.CharField(widget=forms.TextInput(attrs={"placeholder":"Queue Name", "size":60}))
class Meta:
model = QueueStatusModel
fields = [
'queue_name'
]
def clean_queue_name(self, *args, **kwargs):
queue_name = self.cleaned_data.get("queue_name")
if " " in queue_name:
raise forms.ValidationError("Queue names cannot contain space")
else:
return queue_name
队列状态模型,存储队列相关信息:
class QueueStatusModel(models.Model):
queue_name = models.CharField(max_length=100)
volume = models.IntegerField()
active_investigators = models.IntegerField()
新的 Investigator 相关模型:
class PriorityModel(models.Model):
login = models.CharField(max_length=15)
core = models.CharField(max_length=20, choices=[("", ""), ("", "")])
active_qs = models.CharField(max_length=500)
priority = models.CharField(max_length=500,
choices=[("SLA","SLA"), ("volume","Volume"), ("custom","Custom")]
)
custom_priority = models.TextField(blank=True)
class Meta:
ordering = ('core', '-login')
【问题讨论】:
标签: python-3.x django django-forms