Django:有効な選択肢を選択してください。その選択は利用可能な選択肢の1つではありません

ニキータ・グリゴリエフ

ネストされた選択フィールドがあります。上のフィールドはスマートフォンのブランドを選択するために使用され、下のフィールドはそのブランドのスマートフォンモデルを選択するために使用されます。

私が直面している問題は、AJAXを使用して一番下の選択肢を制限すると、フォームが無効になることです。ただし、制限がある場合とない場合のPOSTリクエストはまったく同じです。

制限なし:

{'name': 'Ok iPhone 12 Mini', 'price': Decimal('345'), 'color': <Color: Red>, 'condition': <Condition: Refurbished by manufacturer>, 'storage': <StorageChoice: 128>, 'phone_model': <PhoneModel: iPhone 12 Mini>, 'description': '...', 'image': <InMemoryUploadedFile: pic.jpg (image/jpeg)>}

制限付き:

{'name': 'Ok iPhone 12 Mini', 'price': Decimal('345'), 'color': <Color: Red>, 'condition': <Condition: Refurbished by manufacturer>, 'storage': <StorageChoice: 128>, 'description': '...', 'image': <InMemoryUploadedFile: pic.jpg (image/jpeg)>, 'phone_model': <PhoneModel: iPhone 12 Mini>}

私が見ることができる唯一の違いは順序です。これは辞書の場合は問題ではありません。

views.py:

def product_add(request):
    form = AddProductForm()
    if request.method == "POST":
        form = AddProductForm(request.POST, request.FILES)
        form.is_valid()
        form.cleaned_data['phone_model'] = PhoneModel.objects.get(id=request.POST['phone_model'])
        form.cleaned_data.pop('make', None)
        print(form.cleaned_data)
        if form.is_valid():
            form.cleaned_data['seller'] = request.user.customer
            Product.objects.create(**form.cleaned_data)
        else:
            print(form.errors)
    cart = get_cart(request)
    context = {'form': form, **cart}
    return render(request, 'store/product_add.html', context)

def load_models(request):
    make_id = request.GET.get('make')
    models = PhoneModel.objects.filter(phone_make=make_id)
    return render(request, 'part/product_add_model_options.html', {'models': models})

forms.py:

class AddProductForm(forms.ModelForm):
    class Meta:
        model = Product
        fields = ['name', 'price', 'color', 'condition',
                  'storage', 'phone_model', 'description', 'image']

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        make = forms.ModelChoiceField(
            queryset=PhoneMake.objects.all(), required=False)
        self.fields['make'] = make
        self.fields['phone_model'].queryset = PhoneModel.objects.none()
        if 'make' in self.data:
            try:
                make_id = int(self.data.get('make'))
                self.fields['phone_model'].queryset = PhoneModel.objects.filter(
                    phone_make__phone_make=make_id)
            except Exception as e:
                print(e)

product.html(この「選択」に「オプション」を挿入するためにJqueryスクリプトで使用されます):

  <select name="phone_model" required id="id_model"> </select>

product_option.html:

<option value="">---------</option>
{% for model in models %}
<option value="{{ model.id }}">{{ model }}</option>
{% endfor %}
ニーラジ

AddProductFormのinitメソッドには、次のクエリself.fields['phone_model'].queryset = PhoneModel.objects.filter(phone_make__phone_make=make_id)があります。

self.fields['phone_model'].queryset = PhoneModel.objects.filter(
                phone_make=make_id)

、「phone_make」フィールドがフィルターで2回言及されている

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Django-有効な選択肢を選択してください。その選択は利用可能な選択肢の1つではありません

分類Dev

有効な選択肢を選択してください。その選択肢は、利用可能な選択肢の1つではありません。

分類Dev

有効な選択肢を選択してください。その選択は利用可能な選択肢の1つではありません

分類Dev

ChoiceField:有効な選択肢を選択してください。それは利用可能な選択肢の1つではありません

分類Dev

Djangoフォームエラー:有効な選択肢を選択してください。...利用可能な選択肢の1つではありません

分類Dev

Djangoモデルフォームのすべてのフィールドには、「有効な選択肢を選択してください。その選択肢は利用可能な選択肢の1つではありません」と表示されます。

分類Dev

有効な選択肢を選択してください。2.6は利用可能な選択肢の1つではありません

分類Dev

有効な選択肢を選択してください。0は利用可能な選択肢の1つではありません

分類Dev

有効な選択肢を選択してください。'"xxx"は利用可能な選択肢の1つではありません

分類Dev

有効な選択肢を選択してください。利用可能な選択肢の1つではありません

分類Dev

DjangoModelFormのエラー。有効な選択肢を選択してください。その選択は有効な選択の1つではありません

分類Dev

ModelChoiceFieldは常に次のように表示します:「有効な選択肢を選択してください。その選択肢は利用可能な選択肢の1つではありません」

分類Dev

Djangoフォームエラー:有効な選択肢を選択してください。その選択は利用可能な選択肢の1つではありません

分類Dev

Django管理者によると:有効な選択肢を選択してください。その選択は利用可能な選択肢の1つではありません

分類Dev

djangoフォームでajaxを使用しているときに、「有効な選択肢を選択してください。これは利用可能な選択肢の1つではありません。」というエラーが表示されます。

分類Dev

Django有効な選択肢を選択してください。[...]は利用可能な選択肢の1つではありません。動的に生成された形式で

分類Dev

Djangoを保存している間、「この選択肢は利用可能な選択肢の1つではありません」

分類Dev

有効な選択肢を選択してくださいModelChoiceField

分類Dev

spring-boot:送信された値が指定された有効な選択肢の1つであることを確認してください

分類Dev

Djangoの選択肢ではよりわかりやすい名前を使用してください

分類Dev

RubyMineにIntellijIdeaのような最初の完了の選択肢を選択させる方法はありますか?

分類Dev

有効な選択肢を選択してくださいDjangoFilteredドロップダウンメニュー

分類Dev

Modelformset検証でエラー「 'id':有効な選択肢を選択してください」を修正する方法は?

分類Dev

Cで3つの選択肢(複数の選択肢)を選択します

分類Dev

たくさんの選択肢があります。それらを1つに減らすにはどうすればよいですか?

分類Dev

正規表現は私の2番目の選択肢を有効とは見なしません

分類Dev

AWS Lambda cli update-function-code は有効な選択肢ではありません

分類Dev

FreeBSD csh、TABで利用可能な選択肢を表示しますか?

分類Dev

VHDL エラー: CASE ステートメントの選択肢の選択肢はローカルで静的でなければなりません

Related 関連記事

  1. 1

    Django-有効な選択肢を選択してください。その選択は利用可能な選択肢の1つではありません

  2. 2

    有効な選択肢を選択してください。その選択肢は、利用可能な選択肢の1つではありません。

  3. 3

    有効な選択肢を選択してください。その選択は利用可能な選択肢の1つではありません

  4. 4

    ChoiceField:有効な選択肢を選択してください。それは利用可能な選択肢の1つではありません

  5. 5

    Djangoフォームエラー:有効な選択肢を選択してください。...利用可能な選択肢の1つではありません

  6. 6

    Djangoモデルフォームのすべてのフィールドには、「有効な選択肢を選択してください。その選択肢は利用可能な選択肢の1つではありません」と表示されます。

  7. 7

    有効な選択肢を選択してください。2.6は利用可能な選択肢の1つではありません

  8. 8

    有効な選択肢を選択してください。0は利用可能な選択肢の1つではありません

  9. 9

    有効な選択肢を選択してください。'"xxx"は利用可能な選択肢の1つではありません

  10. 10

    有効な選択肢を選択してください。利用可能な選択肢の1つではありません

  11. 11

    DjangoModelFormのエラー。有効な選択肢を選択してください。その選択は有効な選択の1つではありません

  12. 12

    ModelChoiceFieldは常に次のように表示します:「有効な選択肢を選択してください。その選択肢は利用可能な選択肢の1つではありません」

  13. 13

    Djangoフォームエラー:有効な選択肢を選択してください。その選択は利用可能な選択肢の1つではありません

  14. 14

    Django管理者によると:有効な選択肢を選択してください。その選択は利用可能な選択肢の1つではありません

  15. 15

    djangoフォームでajaxを使用しているときに、「有効な選択肢を選択してください。これは利用可能な選択肢の1つではありません。」というエラーが表示されます。

  16. 16

    Django有効な選択肢を選択してください。[...]は利用可能な選択肢の1つではありません。動的に生成された形式で

  17. 17

    Djangoを保存している間、「この選択肢は利用可能な選択肢の1つではありません」

  18. 18

    有効な選択肢を選択してくださいModelChoiceField

  19. 19

    spring-boot:送信された値が指定された有効な選択肢の1つであることを確認してください

  20. 20

    Djangoの選択肢ではよりわかりやすい名前を使用してください

  21. 21

    RubyMineにIntellijIdeaのような最初の完了の選択肢を選択させる方法はありますか?

  22. 22

    有効な選択肢を選択してくださいDjangoFilteredドロップダウンメニュー

  23. 23

    Modelformset検証でエラー「 'id':有効な選択肢を選択してください」を修正する方法は?

  24. 24

    Cで3つの選択肢(複数の選択肢)を選択します

  25. 25

    たくさんの選択肢があります。それらを1つに減らすにはどうすればよいですか?

  26. 26

    正規表現は私の2番目の選択肢を有効とは見なしません

  27. 27

    AWS Lambda cli update-function-code は有効な選択肢ではありません

  28. 28

    FreeBSD csh、TABで利用可能な選択肢を表示しますか?

  29. 29

    VHDL エラー: CASE ステートメントの選択肢の選択肢はローカルで静的でなければなりません

ホットタグ

アーカイブ