Partage
  • Partager sur Facebook
  • Partager sur Twitter

Django organisation

beaucoup de choses dans les models...

    24 novembre 2019 à 15:42:49

    Bonjour,

    J'ai créé une petite application qui tourne sur le terminal ( pour apprendre les BDD entre autres ) .

    Et maintenant, je souhaite passer au HTML: je voudrais cette application sur un site.

    J'utilise Django comme Framework.

    J'apprends doucement , mais j'ai un problème d'organisation pour les tables:

    Sur mon l'application originale j'avais une classe par table !

    Et bien sûr des méthodes de classe pour chaque classe...

    Je pourrais NAÏVEMENT recopier tout les classes et méthodes dans models.py ( avec des modifications évidemment) , mais je pense que ce n'est pas la bonne méthode: j'aurais un fichier énorme !!!

    Je vais détailler pour mieux faire comprendre.

    Sur le terminal l'application demandait:

    - rentrer des données (mon ticket de caisse avec les prix, poids et nom de tous les produits que j'ai acheté)

    - continuer de renseigner des données ( au cas ou je n'aurais pas pu tout rentrer certains tickets, je peux reprendre là ou j'en étais )

    - explorer des données ( pas fait, mais donne des graphiques en tout genre, panier moyen, jours de courses, etc...)

    - quitter l'application 

    À présent sur une page HTML j'ai la même chose, mais dans Django:

    mes views :  - home ( qui ressort la liste ci-dessus en liens )

                       - start_purchase (rentrer des données): affiche la page d'un formulaire pour rentrer mon ticket

                       - purchase_in_course (continuer de rentrer le tickets que je n'ai pas eu le temps de rentrer): affiche une page avec la liste des tickets non

                         terminés

                      - explore_datas ( affiche une page ou je peux faire des recherches sur des données choisies )

                      - quit 

    J'ai mon home qui affiche bien la liste, chaque autre view affiche un text pour me dire sur quelle page je suis ( je n'ai pas encore développé plus que ça ) et j'ai créé mes tables dans models ( avec postgresql) . j'ai vérifié, elles sont bien crées et comme il faut !!

    Dois-je découper ( plusieurs apps ) ou bien est-ce que je peux m'en sortir avec mes views ( que je vais développer ) et mes modèles ??

    tant qu'à faire voici le code (minimal pour l'instant), les views:

    from django.shortcuts import render
    
    def home(request):
        list_first_menu = {"voir les achats en cours": 'purchase_in_course', "commencer un achat": 'start_a_purchase',
                           "explorer des données": 'explore_datas', "quitter le programme": 'quit'}
        return render(request, 'home.html', {'menu': list_first_menu})
    
    def purchase_in_course(request):
        return render(request, 'purchase_in_course.html')
    
    def start_a_purchase(request):
        return render(request, 'start_a_purchase.html')
    
    def explore_datas(request):
        return render(request, 'explore_datas.html')
    
    def quit(request):
        return render(request, 'quit.html')

    le template home:

    {% extends 'base.html' %}
    
    {% block content %}
    <h1>Bienvenu sur le programme shopping</h1>
    <h2>choisssez un élément dans la liste:</h2>
    <ol>
      {% for k, values in menu.items %}
      {% url values as the_url %}
        <li><a href="{{ the_url }}">{{ k }}</a></li>
      {% endfor %}
    </ol>
    {% endblock %}

    et pour les models: je n'ai que les classes avec leurs champs...

    from django.db import models
    
    class Store(models.Model):
        name = models.CharField(max_length=100)
        road = models.CharField(max_length=100)
        road_number = models.CharField(max_length=100)
        town = models.CharField(max_length=100)
        postcode = models.IntegerField(),
        bank_name = models.CharField(max_length=100)
    
    class Purchase(models.Model):
        purch = models.BooleanField(default=False)
        date  = models.DateField()
        hour  = models.TimeField()
        article_number = models.IntegerField(default=0)
        total_price = models.DecimalField(max_digits=5, decimal_places=2)
        card_code = models.IntegerField()
        store  = models.ForeignKey(Store, on_delete=models.CASCADE)
        today = models.DateField(auto_now=True)
    
    class Product(models.Model):
        product_name = models.CharField(max_length=100)
        great_category  = models.CharField(max_length=100)
        category  = models.CharField(max_length=100)
        sub_category  = models.CharField(max_length=100)
        processed_food  = models.BooleanField()
        conditionned_weight = models.DecimalField(max_digits=7, decimal_places=2)
    
    class Purchase_product(models.Model):
        purchase = models.ForeignKey(Purchase, on_delete=models.CASCADE)
        product = models.ForeignKey(Product, on_delete=models.CASCADE)
        price = models.DecimalField(max_digits=5, decimal_places=2)
        weight = models.DecimalField(max_digits=7, decimal_places=2)

    Je précise: mon but est d'apprendre Django et HTML ( et Javascript probablement)! Pas de faire un site beau et classe !


    Merci à vous,

    Laurent


    • Partager sur Facebook
    • Partager sur Twitter

    Django organisation

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown