status: #doc Tags: #python/django links: Date: 2024-07-11 ___ A model is the single, definitive source of information about your data. It contains the essential fields and behaviors of the data you’re storing. Generally, each model maps to a single database table. # structure - each model is class in models.py in our app folder ex: ```python from django.db import models class Person(models.Model): first_name = models.CharField(max_length=30) last_name = models.CharField(max_length=30) ``` class name is name of the table and each field is name of column in db for [more](https://docs.djangoproject.com/en/5.0/topics/db/models/) ## fields we have different fields for different data types most useful are : - CharField : for text with fixed max length - TextField : for text with flexible max length - BooleanField : for true or false value - IntegerField : for An integer. Values from **-2147483648** to **2147483647** - FloatField : A floating-point number represented in Python by a `float` instance. for [more Field](https://docs.djangoproject.com/en/5.0/ref/models/fields/#field-types) - for optional fields that can be blank use blank=true - for default value to be inserted inside a field use default="my_value" ```python class Person(models.Model): name = models.CharField(max_length=30,default="not_found") address = models.textfield(blank=true) is_alive = models.booleanfield(default=true) ``` # migration as we do our changes to django project we need to apply these changes to our database we use 2 command for this - makemigration make migration plan no change in db ```sh python manage.py makemigration ``` - migrate make change to db based on plan in last command ```sh python manage.py migrate ``` # interaction with model for interaction directly use python shell, use this command in project folder with env active: ```sh python manage.py shell ``` ## import before any interaction first you must import your model, use this in your views or first in py shell ```python # my_app is name of app that you chose in begining # person is name of model you want to import from my_app.models import person ``` ## crud operation ### create with model in structure section in mind - with crate method ```python person.objects.create(first_name="max",last_name="ford") ``` - with save method ``` python from my_app.models import person # Create an instance of the model someone = person(first_name="max",last_name="ford") # Save the object to the database someone.save() ``` ### read - you can save queryset in variable ```python people = person.objects.all() print(people) ``` - all ```python person.objects.all() ``` - filter ```python person.objects.filter(first_name="mohammad") ``` - Single Record ```python person.objects.get(first_name="mohammad",last_name="karimi") ``` > [!note] > `get()` raises a 'DoesNotExist' exception if no matching record is found and a 'MultipleObjectsReturned' exception if more than one record is found. ### update - Update with save method (variable) ```python someone = person.objects.get(id=1) someone.first_name = "ali" someone.save() ``` Update Using `update() ```python # we can also use all() and get() person.objects.filter(first_name="aliii").update(first_name="ali") ``` - **Note:** The `update()` method updates all matching records in a single query. ### delete Delete a Single Object with variable ```python someone = person.objects.get(id=1) someone.delete() ``` Delete Multiple Objects Using `filter()` ```python person.objects.filter(first_name="aliii").delete() ``` - **Note:** The `delete()` method deletes all matching records. --- # References