Home > database >  How can I store data of registration into my django database?
How can I store data of registration into my django database?

Time:04-02

I want to store data of patient from registration page to my django database using serializers but I am not sure how to do that!!

Here I am attaching views.py file:

from django.http import HttpResponse, HttpResponseForbidden
from django.shortcuts import render,redirect
from django.contrib import messages
from django.contrib.auth import authenticate,login,logout
from rest_framework import viewsets

from .models import *
from .serializers import PatientSerializer


class PatientView(viewsets.ModelViewSet):
    queryset = patient.objects.all()
    serializer_class = PatientSerializer

def login_user(request):
    if request.method == 'POST':
        username = request.POST['Username']
        password = request.POST['Password']
        user_type = request.POST['user_type']

        user = authenticate(username=username, password=password)

        #doctor is superuser and receptionist is normaluser

        if user is None:
            login(request, user)
            if user_type == 'Doctor':
                return render(request,'')
            elif user_type == 'Receptionist':
                return render(request, 'Auth/registration.html')
            else:
                return render(request,'')
        else:
            messages.error(request, "Bad Credentials")
            return redirect('login')

    return render(request, "Auth/login.html")

def registration(request):
    if request.method == "POST":
        username = request.POST['username']
        PID = request.POST['PID']
        Name = request.POST['Name']
        Age = request.POST['Age']
        DOB = request.POST['DOB']
        gender = request.POST['gender']
        BG = request.POST['BG']
        PN = request.POST['PN']
        Add = request.POST['Add']


    else:
        if request.user.is_staff:
            return render(request,'Auth/registration.html')
        else:
            return HttpResponseForbidden('<h1> 403 Forbidden <br>You are not allowed to access this page.</h1>')

This is my registration.html file :

<!DOCTYPE html>
{% load static %}
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="static/CSS/style1.css">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.2/css/all.min.css"/>
    <title>Registration</title>
</head>
<body>
    <div >
        <div >
            <div ><span>Registration Form</span></div>
            <form action="#">
                <div >
                    <h3>Patient ID</h3>
                    <input type="text" name="PID" required>
                </div>
                <div >
                    <h3>Name</h3>
                    <input type="text" name="Name" required>
                </div>
               <div >
                    <h3>Age</h3>
                    <input type="number" name="Age" required>
                </div>
                <div >
                    <h3>DOB</h3>
                    <input type="date" name="DOB" required>
                </div>
                <div >
                    <h3>Gender</h3>
                    <select name="gender">
                        <option value="none" disabled selected></option>
                        <option value="male">Male</option>
                        <option value="female">Female</option>
                        <option value="other">Other</option>
                    </select>
                </div>
                <div >
                    <h3>Blood Group</h3>
                    <select name="BG" >
                        <option value="none" disabled selected></option>
                        <option value="A ">A </option>
                        <option value="A-">A-</option>
                        <option value="B ">B </option>
                        <option value="B-">B-</option>
                        <option value="AB ">AB </option>
                        <option value="AB-">AB-</option>
                        <option value="O ">O </option>
                        <option value="O-">O-</option>
                    </select>
                </div>
                <div >
                    <h3>Phone Number</h3>
                    <input type="text" name="PN" onkeypress="return event.charCode >= 48 && event.charCode <= 57" minlength="10" maxlength="10" required />
                </div>
                <div >
                    <h3>Address</h3>
                    <input type="text" name="Add" required>
                  </div>
                 <div >
                    <input type="submit" value="Submit">
                  </div> 
            </form>
        </div>
    </div>
</body>
</html>

This is my models.py file:

from django.db import models
from django import forms

User_type = (
    ("Doctor", "Doctor"),
    ("Receptionist", "Receptionist"),
    ("View Patient","View Patient"),
)

Gender = (
    ("Male", "Male"),
    ("Female", "Female"),
    ("Other","Other"),
)

Blood_group = (
    ("A ","A "),
    ("A-","A-"),
    ("B ","B "),
    ("B-","B-"),
    ("AB ","AB "),
    ("AB-","AB-"),
    ("O ","O "),
    ("O-","O-"),
)

class Doctor(models.Model):
    Username = models.CharField(max_length=200)
    Password = models.CharField(max_length=32)
    type = models.CharField(max_length=10,default='doctor')

    def __str__(self):
        return self.Username

    def is_doctor(self):
        return self.type

class receptionist(models.Model):
    Username = models.CharField(max_length=200)
    Password = models.CharField(max_length=32)
    type = models.CharField(max_length=10,default='Receptionist')


    def __str__(self):
        return self.Username

    def is_receptionist(self):
        return self.type

class patient(models.Model):
    Patient_ID = models.CharField(max_length=200)
    Name = models.CharField(max_length=200)
    Age = models.CharField(max_length=200)
    DOB = models.DateTimeField()
    Gender = models.CharField(max_length=200 ,choices=Gender)
    BloodGroup = models.CharField(max_length=200 ,choices=Blood_group)
    Phone = models.CharField(max_length=200)
    Address = models.CharField(max_length=200)

and this is serializers.py file:

from rest_framework import serializers
from .models import *

class PatientSerializer(serializers.ModelSerializer):
    class Meta:
        model = patient
        fields = ("PID", 'Name', 'Age', 'DOB', 'gender', 'bg', 'pn', 'Add' )

I am not sure that serializer is needed or not but one of my friend said that you can use serializers for that so i have used it if it is not necessary that tell me another way also!!

and actually,I am working on this project so somethings may not be done so ignore those things I just want to store Patient info into my database.So please help me to find the solution.Thank you!!

CodePudding user response:

To save a new entry of an object in your database do it like this, in your registration function in views.py:

from . import patient

new_patient = patient(Name=Name, Age=Age, gender=Gender) #include all properties here
new_patient.save()

CodePudding user response:

In the directory where your models.py and views.py live create a file if does not already exist forms.py and add the following code.

In forms.py

from . import models
from django import forms
from .models import patient

# Create your forms here
class PatientForm(forms.Form):
    class Meta:
        model = patient
        # If you want all fields of your model then un-comment the below
        # and comment the next line
        # fields = '__all__'
        fields = ("PID", "Name", "Age", "DOB", "gender", "bg", "pn", "Add")

In views.py

from .forms import PatientForm


def registration(request):
    form = PatientForm()
    # When method is post
    if request.method == "POST":
        # Populate form with data posted
        form = PatientForm(request.POST)
        # Checking form validity
        if form.is_valid():
            # Save data to the db
            form.save()
            return  # do something
        # When form is not valid
        else:
            # Re-render the page with existing data
            return render(request, "Auth/registration.html", {"form": form})
    # When method is not post
    else:
        if request.user.is_staff:
            return render(request, "Auth/registration.html", {"form": form})
        else:
            return HttpResponseForbidden("<h1> 403 Forbidden <br>You are not allowed to access this page.</h1>")

In registration.html

<form>
    {% csrf_token %}
    <!-- Any other thing you want -->
    {{ form }}
    <!-- Any other thing you want -->
</form>
  • Related