Как я могу сделать много-много полей в качестве элементов чекбокс в шаблоне.? - PullRequest
1 голос
/ 20 сентября 2019

У меня есть 3 модели, одна из которых категория (Fields = category_name), а другая - подкатегория (Fields = category (ForeignKey to Category), sub_category). И еще одна модель - DummyModel.

# Model
class DummyModel(models.Model):
    name = models.CharField(max_length=20)
    email = models.EmailField()
    category = models.ManyToManyField(Category)
    sub_category = models.ManyToManyField(SubCategory)

Этомоя форма

class StartProjectForm(ModelForm):
    class Meta:
        model = StartProject
        fields = (
            'name',
            'email',
            'category',
            'sub_category',
        )

    def __init__(self, *args, **kwargs):
        super(StartProjectForm, self).__init__(*args, **kwargs)

        self.fields["category"].widget = CheckboxSelectMultiple()
        self.fields["category"].queryset = Category.objects.all()

        self.fields["sub_category"].widget = CheckboxSelectMultiple()
        self.fields["sub_category"].queryset = SubCategory.objects.all()

    def save(self, commit=True):
        clean = self.cleaned_data.get
        name = clean('name')
        email = clean('email')
        category = clean('category')
        sub_category = clean('sub_category')

        obj = StartProject()
        obj.name = name
        obj.email = email
        obj.category = category
        obj.sub_category = sub_category
        obj.save()

Это мой взгляд

#view

class StartProjectView(View):
    template_name = 'start-project.html'

    def get(self, request):
        form = StartProjectForm()
        return render(request, self.template_name, {'form': form})

    def post(self, request):
        form = StartProjectForm(request.POST)
        if form.is_valid():
            form.save()
            form = StartProjectForm()
            return render(request, self.template_name, {'form':form})

        return HttpResponse("<h2>Done</h2>")

Это мой шаблон

# Template

<form method="post">
        {% csrf_token %}
        <p>name: <input type="text" name="name"></p>
        <p>Email: <input type="text" name="email"></p>
        {% for form in form %}
            <input type="checkbox" name="category">{{ form.category }}
        {% endfor %}
        <br>
        {% for form in form %}
            <input type="checkbox" name="sub_category">{{ form.sub_category }}
        {% endfor %}
        <button type="submit">Start Now</button>
    </form>

Я хочу, чтобы категории и подкатегории в моем шаблоне были отмечены флажками.Как мне это сделать .?

1 Ответ

1 голос
/ 20 сентября 2019

После того, как вы покопались в своих потребностях, вы ищете {{ form.FIELD_NAME }}.

. Ваша форма {{ form.category }} и {{ form.sub_category }} должна работать.

Учтите, что это толькоотображает сам ввод, ни метки, ни другие элементы DOM.

Для получения дополнительной информации просмотрите документы по «Визуализации полей» -> https://docs.djangoproject.com/en/2.2/topics/forms/#rendering-fields-manually

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