代码之家  ›  专栏  ›  技术社区  ›  Arbazz Hussain

根据选择填写Django表格,模型数据作为初始数据

  •  0
  • Arbazz Hussain  · 技术社区  · 6 年前

    需要有关添加的帮助 model class 作为初始数据的字段 forms 数据。

    型号.py

    class SourceCode(models.Model):
        source_description = models.CharField(max_length=80,unique=True)
        source_urls = ArrayField(ArrayField(models.TextField(blank=True),),blank=True,null=True)
        source_results = JSONField(blank=True,null=True)
    
        def __str__(self):
            return self.source_description
    

    表单

    class SourceForm(forms.Form):
        source_description = forms.ModelChoiceField(queryset=SourceCode.objects.all(),required=True)
        source_form_urls = forms.CharField(widget=forms.Textarea(attrs={'placeholder':'Enter URLS Here'}))
    

    我创造了 Source1 添加的对象(amp;A) https://stackoverflow.com 价值 source_urls 字段。

    enter image description here


    如下所示:

    一旦我选择 源1 forms.ModelChoiceField ,我想让它显示 源网址 现场数据 源网址 基于用户选择的对象。

    enter image description here

    1 回复  |  直到 6 年前
        1
  •  1
  •   BottleZero    6 年前

    听起来需要一个javascript解决方案。

    在视图上下文中设置一个名为“source-urls”的上下文变量后,可以加载模板中的所有源URL:

    你的观点:

    class YourViewName():
    
        def get_context_data(self, **kwargs):
            context_data = super().get_context_data(**kwargs)
            context_data['source_urls'] = SourceCode.objects.values('id', 'source_urls')
            return context_data
    

    模板中:

    <script>
        var source_urls = {
            {% for su in source_urls %}
            "{{ su.id }}": "{{ su.source_urls }}",
            {% endfor %}
        }
    </script>
    

    然后在您的javascript中添加一些内容:

    $('#source_description_id').change(function() {
        $('#source_form_urls_id').val(source_urls[$(this).val()]);
    });
    

    或者您可以创建另一个用Ajax调用搜索源URL的视图:

    def source_url_searcher(request):
    
        source_id = request.GET.get('id')
        source_urls = SourceCode.objects.get(id=source_id).source_urls 
    
        return return JsonResponse({source_urls: source_urls})
    

    还有你的javascript:

    $('#source_description_id').change(function() {
        $.ajax({
            url: <the_ajax_url>,
            data: {source_id: $(this).val()},
            success: function(response) {
                $('#source_form_urls_id').val(response.source_urls);
            }
        });
    });
    

    任何一个例子都需要一些抛光才能正确地工作,但它们提供了一个一般的概念。