Пользовательский зависимый выпадающий в Django - PullRequest
2 голосов
/ 03 апреля 2019

Я пытаюсь реализовать два раскрывающихся списка на своей странице регистрации с настраиваемыми полями, которые предлагают пользователю выбрать марку телефона и конкретную модель своего телефона.

Я хочу, чтобы раскрывающийся список моделей телефонов зависел от раскрывающегося списка марок телефонов.

Другими словами, если я укажу, что у меня телефон Apple, в раскрывающемся списке моделей телефонов должны быть указаны только параметры Iphone 6, Iphone 7, Iphone 8 и т. Д.

До сих пор я не смог обнаружить, как сделать пользовательскую зависимую форму, поэтому я попытался начать с малого и сделать один обычный выпадающий список. К сожалению, я тоже не смог этого сделать.

Чтобы добавить обычный выпадающий список, я добавил следующее в мой models.py

from django.db import models

PHONES = (
    ('samsung','SAMSUNG'),
    ('iphone', 'IPHONE'),
    ('oneplus','ONEPLUS'),
    ('lg','LG'),
)
class Phones(models.Model):
    phone = models.CharField(max_length=6, choices=PHONES, default='iphone')

И затем добавить следующее к forms.py

from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
from main.models import Phones

class NewUserForm(UserCreationForm):
    email = forms.EmailField(required=True)

    class Meta:
        model = User, Phones
        fields = ("username", "email", "phone", "password1", "password2")

    def save(self, commit=True):
        user = super(NewUserForm, self).save(commit=False)
        user.email = self.cleaned_data["email"]
        if commit:
            user.save() #saves to db
        return user

Буду признателен за любую помощь в реализации зависимого раскрывающегося списка с настраиваемыми полями в моей регистрационной форме. Я попытался просмотреть учебники по этой теме, но не нашел ничего написанного для начинающих и специально для пользовательских зависимых выпадающих меню.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...