清水と申します。
実際に再現したわけではありませんが、ぱっと見でviews.pyのこの部分。

> def form_test2(request):
>    if request.method == "POST":
>        form = ServerInfoForm(request.POST)
>        if form.is_valid():
>            serverinfo = form.save(commit=False)
>            serverinfo.environment_id = request.GET["environment"] 
→ここでエラーになっているっぽい。
>            serverinfo.server_name = request.GET["server_name"]
> ...

POST処理なのでここは「request.GET["environment"]」ではなく「request.POST["environment"]」でOKなような気がしますがいかがでしょう?
 
2018年2月8日木曜日 23時01分39秒 UTC+9 sinf...@gmail.com:
>
> 当方Django初心者で以下のエラーで悩んでおります。
>
> Formを用いたデータ登録処理にて「MultiValueDictKeyError」エラーが発生して
> 登録処理ができない状態です。
>
> <データ登録画面の概要>
> /form_test2にアクセスすると以下のような登録画面が表示されるので、
> 情報を入力してSaveボタンを押すと上記エラーが発生する。
>
> ------------------------------------------------------------
> Envirnment: PROD,TEST,DEVの3つから選択
> ServerName: 任意の文字列を入力
> OS_version : リストから値を選択
> CPU: 数値を入力
> MEMORY:数値を入力
> ------------------------------------------------------------
>
>
> エラーが発生している部分がviews.py内の以下の箇所です。
>
> serverinfo.environment_id = request.GET["environment"]
>
> envrinmentはモデルで定義されているクラスServerInfo内の項目ですが、
> Envrinemtクラスを参照するForeignKeyになっています。
>
> ServerInfoクラスのテーブルデータ内容
> id          os_version  cpu         memory      environment_id  server_name
> ----------  ----------  ----------  --------- -  --------------  
> -----------
> 2           2012NR      21          129                1              
> server01
> 3           2012NR       5              5                 2              
>  server02
>
> Environmentクラスのテーブルデータ内容
> id          env_value
> ----------  ----------
> 1           PROD
> 2           TEST
> 3           DEV
>
> 以下、URL,フォーム、ビュー、モデル等関連する部分の情報になります。
> ====================================================================
>                      models.py
> ====================================================================
> class Environment(models.Model):
>     class Meta:
>         verbose_name = '環境種別'
>         verbose_name_plural = '環境種別'
>
>     env_value = models.CharField(max_length=20)
>
>     def __str__(self):
>         return self.env_value
>
> class ServerInfo(models.Model):
>
>     class Meta:
>         verbose_name = 'サーバ情報'
>         verbose_name_plural = 'サーバ管理情報'
>
>     OS_VERSIONS = (
>         ('2012NR', 'WindowsServer2012'),
>         ('2012SR2', 'WindowsServer2012R2'),
>         ('2016NR', 'WinodwsServer2016NR'),
>         )
>
>     environment = models.ForeignKey(Environment, on_delete=models.CASCADE)
>     server_name = models.CharField(max_length=50, unique=True)
>     os_version = models.CharField(max_length=50,choices=OS_VERSIONS)
>     cpu = models.IntegerField(default=1, help_text="単位はGB")
>     memory = models.IntegerField(default=1, help_text="単位はGB")
>     #@classmethod
>     def __str__(self):
>         return self.server_name
> ===============================================================
>
>
> ======================================================================
>                               views.py
> ===============================================================
> def form_test2(request):
>     if request.method == "POST":
>         form = ServerInfoForm(request.POST)
>         if form.is_valid():
>             serverinfo = form.save(commit=False)
>             serverinfo.environment_id = request.GET["environment"] 
> →ここでエラーになっているっぽい。
>             serverinfo.server_name = request.GET["server_name"]
>             serverinfo.os_version = request.GET["os_version"]
>             serverinfo.cpu = request.GET["cpu"]
>             serverinfo.memory = request.GET["memory"]
>             serverinfo.save()
>             return redirect(detail, pk=serverinfo.pk)
>     else:
>         form = ServerInfoForm()
>     return render(request, 'form_test.html', {'form': form})
> ======================================================================
> ======================================================================
>                                 urls.py
> ======================================================================
> <関係する部分のみ抜粋>
> url(r'^form_test2$', views.form_test2,name='form_test2'),
> ======================================================================
>
>
> ======================================================================
>                                 Form.py
> ======================================================================
> from django import forms
> from .models import ServerInfo
>
> class ServerInfoForm(forms.ModelForm):
>     class Meta:
>         model = ServerInfo
>         fields =("environment","server_name","os_version","cpu","memory")
>
> ======================================================================
>
> ======================================================================
>                                 form_test.html
> ======================================================================
>
> {% extends 'base.html' %}
>
> {% block content %}
>    <H1>FORM画面テスト</H1>
>
> <form method="POST" class="post-form">{% csrf_token %}
>         {{ form.as_p }}
>         <button type="submit" class="save btn btn-default">Save</button>
>     </form>
> {% endblock content %}
>
>
> おそらく、テンプレートに入力されたEnvirnmentの値(PROD,TEST,DEV)を受け取ってデータベースに
> 登録するときに正しい情報を渡せていないからだと思いますが、具体的にどのように修正すればエラーが
> 改善するのかいまいちわかりません。
>
> 以上、ご教授よろしくお願いいたします。
>

-- 
-----------------                       http://djangoproject.jp/                
         -----------------
You received this message because you are subscribed to the Google Groups 
"django-ja" group.
To post to this group, send email to django-ja@googlegroups.com
To unsubscribe from this group, send email to 
django-ja-unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/django-ja
--- 
このメールは Google グループのグループ「django-ja」の登録者に送られています。
このグループから退会し、グループからのメールの配信を停止するには django-ja+unsubscr...@googlegroups.com 
にメールを送信してください。
その他のオプションについては、https://groups.google.com/d/optout にアクセスしてください。

メールによる返信