zoukankan      html  css  js  c++  java
  • Object-relational mapper FRO DJANGO

    Define your data models entirely in Python. You get a rich, dynamic database-access API for free — but you can still write SQL if needed.

    for example:

    class Band(models.Model):
        """A model of a rock band."""
        name = models.CharField(max_length=200)
        can_rock = models.BooleanField(default=True)
    
    
    class Member(models.Model):
        """A model of a rock band member."""
        name = models.CharField("Member's name", max_length=200)
        instrument = models.CharField(choices=(
                ('g', "Guitar"),
                ('b', "Bass"),
                ('d', "Drums"),
            ),
            max_length=1
        )
        band = models.ForeignKey("Band")
    

    Models

    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.

    The basics:

    • Each model is a Python class that subclasses  1 django.db.models.Model .
    • Each attribute of the model represents a database field.
    • With all of this, Django gives you an automatically-generated database-access API; see Making queries.
    from django.db import models
    
    class Person(models.Model):
        first_name = models.CharField(max_length=30)
        last_name = models.CharField(max_length=30)
    

      The above Person model would create a database table like this: 上面的将会相当于用下面的SQL语句在数据库中创建表格

    CREATE TABLE myapp_person (
        "id" serial NOT NULL PRIMARY KEY,
        "first_name" varchar(30) NOT NULL,
        "last_name" varchar(30) NOT NULL
    );
    

      

    使用模型

    一旦定义了模型,就需要告诉Django你将使用 这些模型。通过编辑您的设置文件并更改INSTALLED_APPS设置以添加包含您的 设置的模块的名称来执行此操作models.py

    例如,如果应用程序的模型位于模块中 myapp.models脚本为应用程序创建的包结构), 则应部分阅读:manage.pystartappINSTALLED_APPS

    INSTALLED_APPS = [
        #...
        'myapp',
        #...
    ]
    

      When you add new apps to INSTALLED_APPS, be sure to run manage.py migrate, optionally making migrations for them first with manage.py makemigrations.

    Fields

    The most important part of a model – and the only required part of a model – is the list of database fields it defines. Fields are specified by class attributes. Be careful not to choose field names that conflict with the models API like cleansave, ordelete.

    Example:

    from django.db import models
    
    class Musician(models.Model):
        first_name = models.CharField(max_length=50)
        last_name = models.CharField(max_length=50)
        instrument = models.CharField(max_length=100)
    
    class Album(models.Model):
        artist = models.ForeignKey(Musician, on_delete=models.CASCADE)
        name = models.CharField(max_length=100)
        release_date = models.DateField()
        num_stars = models.IntegerField()
    

    choices

    An iterable (e.g., a list or tuple) of 2-tuples to use as choices for this field. If this is given, the default form widget will be a select box instead of the standard text field and will limit choices to the choices given.

    A choices list looks like this:

    YEAR_IN_SCHOOL_CHOICES = (
        ('FR', 'Freshman'),
        ('SO', 'Sophomore'),
        ('JR', 'Junior'),
        ('SR', 'Senior'),
        ('GR', 'Graduate'),
    )
    

      

    The first element in each tuple is the value that will be stored in the database. The second element is displayed by the field’s form widget.

    Given a model instance, the display value for a field with choices can be accessed using the get_FOO_display()method. For example:

    from django.db import models
    
    class Person(models.Model):
        SHIRT_SIZES = (
            ('S', 'Small'),
            ('M', 'Medium'),
            ('L', 'Large'),
        )
        name = models.CharField(max_length=60)
        shirt_size = models.CharField(max_length=1, choices=SHIRT_SIZES)
    

      

    >>> p = Person(name="Fred Flintstone", shirt_size="L")
    >>> p.save()
    >>> p.shirt_size
    'L'
    >>> p.get_shirt_size_display()
    'Large'
    

      

  • 相关阅读:
    实验二 结对编程 第二阶段
    实验二 结对编程 第一阶段
    实验一 GIT 代码版本管理
    实验五 单元测试
    实验四 代码审查
    结对编程 第二阶段
    结对编程 第一阶段
    实验一 GIT代码版本管理
    实验五 单元测试
    实验四 代码评审
  • 原文地址:https://www.cnblogs.com/Mengchangxin/p/9782268.html
Copyright © 2011-2022 走看看