django之form表單select配合model的使用

forms.py文件

class HostForm(forms.Form):
    hostname = forms.CharField(label=_('主機名'), max_length=128, widget=forms.TextInput(attrs={'class': 'form-control', "placeholder": "主機名", 'autofocus': ''}))
    ip = forms.CharField(label=_('ip地址'), max_length=128, widget=forms.TextInput(attrs={'class': 'form-control',  "placeholder": "ip地址"}))
    remoteuser = forms.CharField(label=_('用戶'), max_length=128, widget=forms.TextInput(attrs={'class': 'form-control', "placeholder": "用戶", 'autofocus': ''}), initial="root")
    password = forms.CharField(label=_('密碼'), max_length=128, widget=forms.TextInput(attrs={'class': 'form-control', "placeholder": "密碼", 'autofocus': ''}), required=False)
    port = forms.CharField(label=_('端口'), max_length=128, widget=forms.TextInput(attrs={'class': 'form-control',  "placeholder": "端口"}), initial=22)
    private_key = forms.CharField(label=_('私鑰'), max_length=2048, widget=forms.Textarea(attrs={'class': 'form-control',  "placeholder": "私鑰"}), required=False)
    # platform = forms.CharField(label=_('平臺'), max_length=2048, widget=forms.Select((), attrs={'class': 'form-control',  "placeholder": "平臺"}), required=False)
    platform = forms.CharField(label=_('平臺'), max_length=2048, widget=forms.Select(attrs={'class': 'form-control',  "placeholder": "私鑰"}))

    def __init__(self, *args, **kwargs):
        super(HostForm, self).__init__(*args, **kwargs)
        self.fields["platform"].widget.choices = models.Platform.objects.all().values_list("id", "platform")

model.py文件


class Platform(models.Model):
    id = models.AutoField(primary_key=True)
    platform = models.CharField(max_length=128, default="內網")

view.py文件

@method_decorator(login_required(), name='dispatch')
class CreateHost(View):
    template_name = "assets/create.html"
    form = forms.HostForm()
    def get(self, request, *args, **kwargs):
        form = forms.HostForm()

        hosts_list = []
        return render(request, 'assets/create.html', locals())
        # return super().get(request, *args, **kwargs)

    def post(self, request, *args, **kwargs):
        hostname = request.POST.get("hostname")
        ip = request.POST.get("ip")
        remoteuser = request.POST.get("remoteuser")
        password = request.POST.get("password")
        port = request.POST.get("port")
        private_key = request.POST.get("private_key")
        # 獲取到id(主鍵)
        platformid = request.POST.get("platform")
        # 根據id獲取對應的數據
        platform = Platform.objects.filter(id=platformid)[0].platform

前端引用

              <div class="form-group">
                    {{ form.platform.label }}
                <!--指定 date標記-->
                    {{ form.platform }}```

效果圖
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章