forms
modelforms, save(), exclude, commit=False
model field options, field types
models
models gender field
models.py
class Patient(models.Model):
name = models.CharField(max_length=30)
age = models.IntegerField()
GENDER_CHOICES = (
('M', 'Male'),
('F', 'Female'),
)
gender = models.CharField(max_length=1, choices=GENDER_CHOICES)
doctor = models.ForeignKey(User)
def __unicode__(self):
return self.name
forms.py
class RegisterPatientForm(ModelForm):
class Meta:
model = Patient
exclude = ('doctor',)
urls.py
(r'^register/$', register),
(r'^list/$', list),
views.py
@login_required
def register(request):
if request.method == 'POST':
form = RegisterPatientForm(request.POST)
if form.is_valid():
new_patient = form.save(commit=False)
new_patient.doctor = request.user
new_patient.save()
return HttpResponseRedirect("/list/")
else:
form = RegisterPatientForm()
return render_to_response("patient/register.html",
{'form': form,},
RequestContext(request))
def list(request):
patients = Patient.objects.filter(doctor=request.user)
return render_to_response("patient/list.html",locals())
templates/patient/register.html
{% extends "base.html" %}
{% block title %}<h1>Register New Patient</h1>{% endblock %}
{% block content %}
<form action="" method="post">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Create new patient">
</form>
{% endblock %}
templates/patient/list.html
{% extends "base.html" %}
{% block title %}<h1>Patient List</h1>{% endblock %}
{% block content %}
<table>
{% for patient in patients %}
<tr><td>{{patient.name}}</td><td>{{patient.age}}</td><td>{{patient.gender}}</td></tr>
{% endfor %}
</table>
{% endblock %}
