Python 3.x 如何在不同的应用程序更新后刷新表单字段和视图';数据库是什么?Django,Python

Python 3.x 如何在不同的应用程序更新后刷新表单字段和视图';数据库是什么?Django,Python,python-3.x,django,django-forms,Python 3.x,Django,Django Forms,我有2个应用程序,2个表单,表单1中的复选框取决于模型2中存储的值(按表单2)。 问题是,当我在模型2中添加一个新对象(表单2)并转到表单1时,复选框不会更新 我已经尽力了,请让我知道我做错了什么,如果有办法的话 这是if表单-1,其中表单字段取决于QueueStatusModel(另一个应用程序)中存在的“队列名称”的不同值 这是表格2,我在其中添加了一个新的“队列名称”: class AddNewQueue(forms.ModelForm): queue_name = forms.Char

我有2个应用程序,2个表单,表单1中的复选框取决于模型2中存储的值(按表单2)。 问题是,当我在模型2中添加一个新对象(表单2)并转到表单1时,复选框不会更新

我已经尽力了,请让我知道我做错了什么,如果有办法的话

这是if表单-1,其中表单字段取决于QueueStatusModel(另一个应用程序)中存在的“队列名称”的不同值

这是表格2,我在其中添加了一个新的“队列名称”:

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()
新的研究者相关模型:

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')

找到了一个使用JavaScript的解决方案。 现在,我将“active_qs”字段呈现为隐藏在HTML中,并使用javascript创建复选框,其值作为从视图传递的所有队列。 我存储在数组中的所有选定复选框的值。当我在表单上按Submit时,“active_qs”隐藏文本字段的值会随着数组更新,然后我可以在form.cleaned_数据中访问它

使用django queryset数据创建复选框的代码:

var available_queues = {{ queue_set_JS|safe }}
for (available_q of available_queues){
    const node = document.createElement("li");
    node.innerHTML = '<input type="checkbox" id="id-' + available_q.queue_name + '" class="queue_li" value="' + available_q.queue_name + '"><label for="id-' + available_q.queue_name + '">'+ available_q.queue_name +'</label>';
    qs_ul.append(node) 
}
其中,活动文本字段先前定义为:

    const active_qs_text_field = document.querySelector("#id_active_qs")
        <input type="submit" class="form-submit-btn" onclick="my_func2();" value="Submit">
function my_func2(){
    active_qs_text_field.setAttribute("value", final_queue_list.join(", "))
}
    const active_qs_text_field = document.querySelector("#id_active_qs")