Django-fr

Forum

#1 25-04-2013 11:58:07

nicolas08
Membre
Inscription : 25-04-2013
Messages : 6

Modèle Partner et is_customer...

Bonjour à tous,
J'ai eu un peu de mal à choisir un sujet de message, je vous présente mes excuses hmm
Je suis débutant sur Django, mon problème va certainement en faire sourire plus d'un d'entre vous...
Voilà mon problème :
J'ai une table Partner qui contient des champs booléens customer, employee.
J'aimerai récupérer une liste pour seulement Partner.customer == True et pouvoir les utiliser dans la partie admin (en fait, une Habitation contient un propriétaire et optionnellement un locataire qui sont clients). Pour l'instant, les combos propriétaire et locataire de ma page admin Habitation me donnent une liste entière des partenaires, y compris les employés).
J'ai pensé à créer une classe Client héritée de Partner, il y a peut-être une solution plus élégante ?

Dernière modification par nicolas08 (25-04-2013 11:59:01)

Hors ligne

#2 25-04-2013 12:57:16

Ssx`z
Membre
Inscription : 13-04-2013
Messages : 8

Re : Modèle Partner et is_customer...

Vous souhaitez faire ceci que dans l'administration ? Il est possible de créer une classe pour personnaliser l'administration de votre modèle. Ainsi, vous pouvez par exemple ajouter une option pour filtrer vos Partner selon le champ customer (Qu'il soit à True, False ou peu importe)

#-*- coding:utf-8 -*-
from django.contrib import admin
from models import Partner
 
class PartnerAdmin(admin.ModelAdmin):
    list_display   = ('nom', 'customer', )        # Champs à afficher
    list_filter    = ('customer', 'employee', )   # Précision du filtrage possible (par état 'customer' ici)
 
admin.site.register(Partner, PartnerAdmin)

Pour plus d'informations : Cours Django - Personnalisons l'administration

Hors ligne

#3 25-04-2013 13:01:18

nicolas08
Membre
Inscription : 25-04-2013
Messages : 6

Re : Modèle Partner et is_customer...

En effet, j'aurai sûrement besoin de ce filtrage dans le modèle plus tard.
Au début, je serai le seul à utiliser l'application, mais peut-être qu'un accès aux techniciens pourrait être une bonne chose par la suite...
J'avais déjà effectué ce filtrage. Mais au niveau d'une édition d'intervention (par un technicien), la combobox me renvoient une liste de tous les partenaires à partir du modèle. Même chose dans l'édition due habitation, qui me renvoie tous les partenaires, y compris les techniciens)
Merci beaucoup pour votre réponse, et pour votre rapidité smile

Dernière modification par nicolas08 (25-04-2013 13:04:58)

Hors ligne

#4 25-04-2013 13:06:27

nicolas08
Membre
Inscription : 25-04-2013
Messages : 6

Re : Modèle Partner et is_customer...

Je devrai peut-être créer des tables différentes, mais j'utilise la table d'OpenErp afin d'éviter une double saisie.

Hors ligne

#5 25-04-2013 13:11:50

Ssx`z
Membre
Inscription : 13-04-2013
Messages : 8

Re : Modèle Partner et is_customer...

Dans l'admin, il est encore possible de filtrer dans ce cas, si vous souhaitez garder le calque "OpenErp" :

class HabitationAdmin(admin.ModelAdmin):
    # Champs de tout à l'heure...

    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        if db_field.name == 'partner':
            kwargs['queryset'] = Partner.objects.exclude(customer=False)

Plus d'info ici encore une fois : http://www.stereoplex.com/blog/filterin … ango-admin. J'espère avoir compris et bien répondu à votre question smile

Dernière modification par Ssx`z (25-04-2013 13:12:00)

Hors ligne

#6 25-04-2013 13:16:14

nicolas08
Membre
Inscription : 25-04-2013
Messages : 6

Re : Modèle Partner et is_customer...

Super !
Que feriez-vous, personnellement, quand à la base Openerp ? Une nouvelle base, quitte à faire une double saisie, ou garder celle d'OpenErp, quitte à galèrer un peu plus pour programmer ?
Merci beaucoup, je vais bien avancer aujourd'hui smile

Hors ligne

#7 25-04-2013 13:33:29

Ssx`z
Membre
Inscription : 13-04-2013
Messages : 8

Re : Modèle Partner et is_customer...

La base de données idéale (3NF/BCNF dans la littérature informatique) est celle où il n'y a pas de redondance, et donc pas de double saisie : en effet, il est possible de faire des erreurs lors de la double saisie ou oublier des mises à jour.
Avec Django, il est possible de redéfinir la plupart des requêtes effectuées dans l'administration, si l'on cherche un peu. Usez donc de cette fonctionnalité, qui est à mon avis plus stable sur le long terme que de faire de la double saisie wink Cela parait plus complexe au niveau programmation au premier abord, mais si le code est documenté et explique bien la démarche, le résultat est le même et limite plus claire (une seule base à gérer, pas de confusion possible)

Hors ligne

#8 25-04-2013 13:44:45

nicolas08
Membre
Inscription : 25-04-2013
Messages : 6

Re : Modèle Partner et is_customer...

Alors j'ai bien commencé wink
Un grand merci à vous pour vos conseils, à bientôt (pas trop tôt j'espère hmm )

Hors ligne

Pied de page des forums