Как сделать несколько форм в Django - PullRequest
0 голосов
/ 08 октября 2018

Я создал отношения один ко многим, и мне нужно поддерживать эти отношения.Можно ли также создавать мульти формы?Я новичок в Python.Можно ли создать две модели с двумя моделями и поместить в файл views.py. Как это сделать?Но я получаю эту ошибку «Выберите правильный выбор. Мужчина не является одним из доступных вариантов» в моей веб-форме.

forms.py

from django import forms
from .models import Diseases, Gender


class GenderForm(forms.ModelForm):
    class Meta:
        model = Diseases
        fields = ['gender_disease', 'diseases']

Models.py

    from django.db import models
from django.db.models import Count
from itertools import groupby
Gender_Choice = (
    ('Male', 'MALE'),
    ('Female', 'FEMALE'),
)

Diseases_Choice= (
    ('Cholera', 'CHOLERA'),
    ('HIV', 'HIV'),
    ('Malaria', 'MALARIA'),
    ('Typhoid', 'TYPHOID'),
    ('Measles', 'MEASLES'),
)


class Gender(models.Model):
    gender=models.CharField(max_length=19, choices=Gender_Choice , default='Male')

    def __str__(self):
        return self.gender


class Diseases(models.Model):
    gender_disease = models.ForeignKey(Gender, choices=Gender_Choice, on_delete=models.CASCADE)
    diseases = models.CharField(max_length=19, choices=Diseases_Choice , default='Malaria')

    def __str__(self):
        return self.diseases

Views.py

from django.shortcuts import render
from django.http import HttpResponseRedirect
from .forms import GenderForm
from django.views.generic import ListView, CreateView, UpdateView
from . models import Gender, Diseases
from django.db.models import Count
from django.views.generic.list import ListView


class CreateMyModelView(CreateView):
    model = Diseases
    form_class = GenderForm
    template_name = 'checkmate/name.html'
    success_url = 'result'
    context_object_name = 'name'


class MyModelListView(ListView):
    template_name = 'checkmate/result.html'
    context_object_name = 'Results'

    def get_queryset(self):
        queryset = GenderForm.objects.values('Gender', 'Diseases').annotate(Patients=Count('*'))
        return queryset

name.html

{% extends 'checkmate/base.html' %}
{% block main_content %}
<br>

<form action="" method="post">{% csrf_token%}
    {{form.as_p}}
    <input type="submit" action="btn btn-success" value="Vote"/>
</form>

{% endblock %}

result.html

{% extends 'checkmate/base.html' %}
{% block main_content %}
<h2>Disease Count</h2>
<br>
<ul>
    {% for item in Results %}
    <li> <b>{{item.Gender}} - {{item.Diseases}} - {{ item.Patients}} votes</b></li>
    {% endfor %}
</ul>
<br>

{% endblock %}

Желаемый вывод

Male Malaria 4votes
Male HIV  3votes
Female HIV 5votes
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...