Maison  >  Article  >  développement back-end  >  Introduction aux exemples d'opérations ORM courantes dans Django

Introduction aux exemples d'opérations ORM courantes dans Django

巴扎黑
巴扎黑original
2017-09-15 10:50:331658parcourir

L'éditeur suivant vous apportera une explication détaillée des opérations ORM couramment utilisées dans Django. L'éditeur le trouve plutôt bon, je vais donc le partager avec vous maintenant et le donner comme référence pour tout le monde. Suivons l'éditeur et jetons un coup d'oeil

Processus Django :

1 Créer un projet Django : django-admin startproject projectname

2 Créer une application : python manage.py startapp appname

3 Créer une relation de mappage entre l'url et la fonction d'affichage dans le contrôleur (urls.py) (correspondance biunivoque)

4 Créer une fonction de vue, compléter le code logique

5 Récupérer l'objet de collection de la base de données

5 Intégrer les variables de la base de données dans le modèle pour le rendu (méthode de rendu)

6 Renvoyez la page html rendue au client

URL : protocole+nom de domaine+port+chemin

Protocole : http
Nom de domaine : www.cnblogs. com
Port : 80
Chemin : yuanchenqi/articles/6811632.html
Données : a=1

L'expression régulière dans la configuration de l'URL correspond à la partie chemin d'une URL

TEMPALTE (modèle) : code HTML + code de contrôle logique

Syntaxe du contrôle logique : {{}} filtre de variable de rendu : {{var|method:parameter}}

{% %} Balises de rendu
{% if %}
{% for %}
{% url %}
{% url %}

Filtre personnalisé et simpletag :

(1) Créer un module de templatetags dans l'application (obligatoire)

(2) Créer n'importe quel fichier .py, tel comme : my_tags.py

from django import template
register = template.Library()
@register.filter
def filter_multi(v1,v2):
return v1 * v2

(3) Créez n'importe quel fichier .py, tel que : my_tags.py

Importez le my_tags.py précédemment créé dans le fichier html à l'aide d'un simple_tag personnalisé et filtrer : {% charger mes_tags %}

(4) Utilisez simple_tag et filtrer :

{% charger xxx %} #Première ligne
# num= 12
{ { num|filter_multi:2 }} #24

Résumé :

filtre : peut n'accepter qu'un seul paramètre. Cependant, vous pouvez utiliser des instructions if telles que

simpletag : peut accepter plusieurs paramètres, mais vous ne pouvez pas utiliser des instructions if telles que

ORM :

Relation entre les tables :

Le champ de clé étrangère un à plusieurs doit être dans la sous-table (table un à plusieurs) CLÉ étrangère

Many-to-many in La troisième table est implémentée en ajoutant des contraintes uniques sur la base de deux Foreign KEY

champs de clé étrangère un-à-un.

Utilisez la méthode mysql

1 Changez la configuration du fichier de configuration de la base de données

2 Changez la configuration du pilote dans le fichier __init__

Configuration ORM vers SQL

Configuration des paramètres de connexion

Table.object.filter() : Ce que vous obtenez est un objet de collection tel que [obj1, obj2]

Table.object.get() : Ce qui est obtenu est un objet modèle

Enregistrement d'ajout d'un à plusieurs :

# Méthode 1 :

# Book.objects.create(id=1,title="python",publication_date="2017-03-04",price=88.8,publisher_id=1)

#Méthode 2

p1=Publisher.objects.get(name="Renmin University Press")
Book.objects.create(id=2,title="python",publication_date="2017-05-04" ,price=98.8, editor=p1)

Créez une relation plusieurs-à-plusieurs dans le fichier models.py

authors=models.ManyToManyField("Author" ) #Plusieurs à plusieurs si le tableau est dans Vous devez ajouter des guillemets ci-dessous

Ajout plusieurs à plusieurs

ManyToMany n'a qu'une seule façon d'ajouter :

book.authors.add(*[author1 ,author2])
book.authors.remove(*[author1,author2])

Remarque : comprenez book_obj. editor

book_obj.authors

Troisième table auto-construite

class Book2Author(models.Model):
author=models .ForeignKey("Author")
Book= models.ForeignKey ("Book")
# Ensuite, il existe un autre moyen :
author_obj=models.Author.objects.filter(id=2)[0]
book_obj =models.Book.objects.filter(id =3)[0]

s=models.Book2Author.objects.create(author_id=1,Book_id=2)
s.save ()
s=models.Book2Author(author=author_obj ,Book_id=1)
s.save()

.value et .value_list font fonctionner le livre de table

#Le résultat de l'utilisation de la valeur n'est pas un objet mais un objet Le résultat d'un champ ou d'un attribut est également querySet

ret1=Book.objects.values('title')
ret1_list = Book.objects.values_list('title')
print('ret1 is : ',ret1) #Le résultat est : ret1 is :
print(ret1_list) #Le résultat est la liste dans querySet

La différence entre la mise à jour et la sauvegarde dans les opérations de modification :

La mise à jour définit uniquement les champs spécifiés et sauvegarde tous les champs, donc la mise à jour est plus efficace

Requête :

Contenu étendu

#API liée aux requêtes :

# <1>filter(**kwargs) : il contient des objets qui correspondent aux conditions de filtre données

# <2>all() : interroge tous les résultats

# < ;3>get(**kwargs) : renvoie les objets qui correspondent aux conditions de filtrage données. Un seul résultat est renvoyé. S'il y a plusieurs objets ou aucun qui ne correspond aux conditions de filtrage, une erreur sera générée.

#-----------Les méthodes suivantes sont toutes utilisées pour traiter les résultats de la requête : telles que objects.filter.values()--------

# <4>values(*field) : renvoie un ValueQuerySet - un QuerySet spécial. Ce que vous obtenez après l'exécution n'est pas une série d'objets instanciés de modèle, mais une séquence de dictionnaire itérable

# < 5>exclude(**kwargs) : il contient des objets qui ne correspondent pas aux conditions de filtre données

# <6>order_by(*field) : trier les résultats de la requête

# < 7>reverse() : trier inversé les résultats de la requête

# <8>distinct() : supprimer les enregistrements en double des résultats renvoyés

# <9> ;values_list(*field) : C'est très similaire à valeurs(). Il renvoie une séquence de tuples et valeurs renvoie une séquence de dictionnaire

# <10>count() : renvoie les correspondances dans la base de données. Le nombre d'objets dans la requête. (Ensemble de requêtes).

# <11>first() : renvoie le premier enregistrement

# <12>last() : renvoie le dernier enregistrement

# <13> () : Si le QuerySet contient des données, il renvoie True, sinon il renvoie False

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn