Συζήτηση
Γεια χαρά, Επισκέπτης
Όνομα χρήστη: Κωδικός: Να με θυμάσαι

ΘΕΜΑ: Django app

Django app 6 Χρόνια 1 Μήνας πριν #5208

  • kostasvit
  • Το Άβαταρ του/της kostasvit
  • Αποσυνδεμένος
  • p_____
  • Δημοσιεύσεις: 6
Καλημέρα! ήθελα την βοήθειας σας πάνω σε μια εφαρμογή που φτιάχνω. Δημιουργώ 2 classes π.χ Δήμος και Δημοτική ενότητα. Πως μπορώ στο admin όταν επιλέγω πχ. τον Δήμο να μου φέρνει τις Δημοτικές ενότητες που αντιστοιχούν στον συγκεκριμένο Δήμο; Πως το δηλώνω στο models;

Εχω έιδη δημιουργήσει class Δήμος όπου εκεί έχω αποθηεκύσει Δημου και Δ.Ε.

Ευχαριστώ
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Django app 6 Χρόνια 1 Μήνας πριν #5210

  • Αποστόλης
  • Το Άβαταρ του/της Αποστόλης
  • Αποσυνδεμένος
  • pytho_
  • Δημοσιεύσεις: 148
  • Ληφθείσες Ευχαριστίες 24
Πρέπει να δημιουργήσεις σύνδεση με foreign key στη βάση δεδομένων.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Django app 6 Χρόνια 1 Μήνας πριν #5211

  • kostasvit
  • Το Άβαταρ του/της kostasvit
  • Αποσυνδεμένος
  • p_____
  • Δημοσιεύσεις: 6
Το έχω προσπαθήσει αλλά δεν το καταφέρνω. Αυτά είναι τα models

class Dhmosinfo(models.Model):
dhmosname = models.CharField(max_length=100,verbose_name='Δήμος', blank=False)
dhmenothta = models.CharField(max_length=100, verbose_name='Δημοτική Ενότητα', blank=True)
dhmostmhma = models.CharField(max_length=100, verbose_name='Υπηρεσία', blank=True)

και

class Employee(models.Model):
author = models.ForeignKey('auth.User', verbose_name='Χρήστης', on_delete=models.CASCADE)
dhmosname = models.CharField(max_length=100,verbose_name='Δήμος', blank=False, null=True)
dhmenothta = models.CharField(max_length=100, verbose_name='Δημοτική Ενότητα', blank=True, null=True)
dhmostmhma = models.CharField(max_length=100, verbose_name='Υπηρεσία', blank=True, null=True)
name = models.CharField(max_length=100, verbose_name='Ονομα Υπαλλήλου', blank=False)
phone = models.CharField(max_length=100, verbose_name='Τηλέφωνο', blank=False)
email = models.EmailField(blank=True)
info = models.TextField(max_length=1000, verbose_name='Πληροφορίες', blank=True)

αυτό που θέλω να κάνω είναι όταν επιλέγω dhmoname να βλέπω τα αντίστοιχα dhmostmhm & dhmenothta.
Πρέπει να φτιάξω και άλλο Model class εκτός απο το Foreign Key?
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Django app 6 Χρόνια 1 Μήνας πριν #5212

  • Αποστόλης
  • Το Άβαταρ του/της Αποστόλης
  • Αποσυνδεμένος
  • pytho_
  • Δημοσιεύσεις: 148
  • Ληφθείσες Ευχαριστίες 24
Απ' ότι θυμάμαι η admin εφαρμογή του Django υλοποιεί μόνη της τα βήματα που χρειάζονται ώστε στα drop down menus να συμπληρώνονται τα πεδία από τον αντίστοιχο πίνακα. Δεν χρειάζεται να κάνεις απολύτως τίποτα εσύ.
Μοναδική προϋπόθεση είναι η σωστή σύνδεση των πινάκων μέσω του foreign key.
Δοκίμασε σε prompt να τρέξεις κάποιο joint query ώστε να διαπιστώσεις οτι η σύνδεση των πινάκων είναι σωστή.

Επίσης, επειδή δεν ξέρω αν είναι όλος ο κώδικας αυτός που έχεις παραθέσει, πιθανώς να λείπει κάτι τέτοιο:
def __str__(self):
	return self.dhmosname
σε κάθε class.

Και κάτι ακόμα. Νομίζω πως το admin interface του Django δεν έχει τη δυνατότητα να δείξει τριπλή ή τετραπλή σύνδεση πινάκων.
Δηλαδή από το dhmoname μπορείς να βλέπεις μόνο το dhmostmhm ή το μόνο το dhmenothta.
Όχι και τα δύο. Δεν το γνωρίζω όμως σίγουρα αυτό.
Τελευταία διόρθωση: 6 Χρόνια 1 Μήνας πριν από Αποστόλης.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Django app 6 Χρόνια 1 Μήνας πριν #5213

  • kostasvit
  • Το Άβαταρ του/της kostasvit
  • Αποσυνδεμένος
  • p_____
  • Δημοσιεύσεις: 6
Καλημέρα.
Ναι αυτό το κομμάτι το έχω προσθέσει, δεν το έβαλα για συντομία.
Άρα μάλλον θα πρέπει να βάλω 3 model classes για να έχω και το τμήμα.
Δλδ Dhmosinfo - Employee - Tmhma και να τους συνδέσω μεταξύ τους.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Django app 6 Χρόνια 1 Μήνας πριν #5214

  • Αποστόλης
  • Το Άβαταρ του/της Αποστόλης
  • Αποσυνδεμένος
  • pytho_
  • Δημοσιεύσεις: 148
  • Ληφθείσες Ευχαριστίες 24
Θα πρέπει να συνδέσεις τους πίνακες για να έχεις τα επιθυμητά αποτελέσματα αλλά στην «εξωτερική » εφαρμογή. Όχι στο admin. Εκεί, όπως σου έγραψα, νομίζω πως δεν μπορείς να επιτύχεις απεικόνιση τριών πινάκων.
Αν θέλεις να μείνεις μόνο στην απλή σύνδεση όπως λες εδώ: «Πως μπορώ στο admin όταν επιλέγω πχ. τον Δήμο να μου φέρνει τις Δημοτικές ενότητες που αντιστοιχούν στον συγκεκριμένο Δήμο;» τότε απλά πρέπει να συνδέσεις τα σωστά fields στους δύο πίνακες.
Σου ξαναλέω πως θα είναι ευκολότερο να κάνεις τους πειραματισμούς σου με ένα query στην βάση σε db prompt και μετά να μεταφέρεις την σύνδεση στο model του Django.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Django app 6 Χρόνια 1 Μήνας πριν #5215

  • Theo
  • Το Άβαταρ του/της Theo
  • Αποσυνδεμένος
  • pytho_
  • Δημοσιεύσεις: 249
  • Ληφθείσες Ευχαριστίες 70
Ένα πρόβλημα είναι ότι είναι λάθος η βάση. Πρέπει να ξεκαθαρίσεις ποιούς πίνακες θέλεις και τι πληροφορίες θες να έχει ο καθένας και μετά πως συνδέονται μεταξύ τους και ποιούς extra πίνακες απαιτείται να κάνεις.
ΠΧ Εάν ένα δήμος έχει περισσότερες από μία δημοτικές ενότητες πρέπει να γίνει νέος πίνακας
εάν ένας υπάλληλος έχει περισσότερα από 1 τηλεφώνα πρέπει να γίνει νέος πίνακας.
Επίσης σε διαφορετικούς πίνακες έχεις κοινά στοιχεία.
Οπότε πρέπει να σχεδιάσεις προσεκτικά τη βάση.
Μετά κοίτα λίγο αυτό docs.djangoproject.com/en/2.0/intro/tutorial02/ δείχνει πως κάνεις τα models και τα queries
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Οι ακόλουθοι χρήστες είπαν "Σε Ευχαριστώ": kostasvit

Django app 6 Χρόνια 1 Μήνας πριν #5216

  • kostasvit
  • Το Άβαταρ του/της kostasvit
  • Αποσυνδεμένος
  • p_____
  • Δημοσιεύσεις: 6
Ο βασικός μου πίνακας θα είναι ο Employee. Εκεί θα περνάω όλους τους υπαλλήλους απο Δήμους αλλά θέλω να επιλέγω απο αναδιπλούμενη λίστα τον Δήμο, την Δημοτική Ενότητα και το Τμήμα που ανήκει για να μην τα γράφω με το χέρι. Άρα αν το λέω σωστά θα πρέπει να έχω και ένα δεύτερο model class όπως πχ Dhmosinfo και ένα τρίτο class Tmhma. Ή θα μπορούσα το Tmhma θα μπορούσα να το συμπεριλάβω μέσα στο Dhmosinfo; Έχετε καμιά καλύτερη ιδέα;

Sorry αν επαναλαμβάνομαι αλλά είμαι καινούριος με το Django και προσπαθώ να μπω λίγο στο κλίμα.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Django app 6 Χρόνια 1 Μήνας πριν #5217

  • Αποστόλης
  • Το Άβαταρ του/της Αποστόλης
  • Αποσυνδεμένος
  • pytho_
  • Δημοσιεύσεις: 148
  • Ληφθείσες Ευχαριστίες 24
Για το πως πρέπει να στηθεί σωστά μια βάση κοίτα εδώ:
www.essentialsql.com/get-ready-to-learn-...d-in-simple-english/

Αναφορικά με το πρόβλημα. Απ' όσο γνωρίζω ΔΕΝ μπορείς να γράψεις custom queries ή custom classes για το admin. Αυτό γίνεται μόνο στο views.py που αφορά στην εφαρμογή που βλέπει ο τελικός χρήστης. Κι εκεί ακριβώς είναι το πρόβλημα.
Στο admin θα πρέπει να καταχωρείς μια Δημοτική Ενότητα για την οποία θα επιλέγεις από dropdown list τον Δήμο.
Εν συνεχεία, από άλλο σημείο, θα πρέπει να καταχωρείς Τμήμα για το οποίο θα επιλέγεις από dropdown list την Δημοτική Ενότητα και πάει λέγοντας.
Δεν μπορείς από μια σελίδα να κάνεις όλες τις απαραίτητες κινήσεις σε ένα βήμα.
Τελευταία διόρθωση: 6 Χρόνια 1 Μήνας πριν από Αποστόλης.
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Django app 6 Χρόνια 1 Μήνας πριν #5218

  • Theo
  • Το Άβαταρ του/της Theo
  • Αποσυνδεμένος
  • pytho_
  • Δημοσιεύσεις: 249
  • Ληφθείσες Ευχαριστίες 70
Κοίτα λίγο το docs.djangoproject.com/en/2.0/ref/models/fields/#choices
μήπως σε καλύπτει θα βάλεις δηλαδή εκτός κλάσης τους Δήμους σε μία λίστα όπως σου λεέι το documentation με tuples και μέσα στην κλάση στο dhmosname px θα βάλεις choices=dimoi
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.

Django app 6 Χρόνια 1 Μήνας πριν #5221

  • kostasvit
  • Το Άβαταρ του/της kostasvit
  • Αποσυνδεμένος
  • p_____
  • Δημοσιεύσεις: 6
Θα μπορούσα να το κάνω κάπως έτσι; Με αυτόν τον τρόπο θα βλέπω μόνο στον Employee το πεδίο dhmosname? το dhmosde?

tmhma_choice = (
('oikonomiki','Οικονομική'),
('texniki','Τεχνική')
)



class Dhmosinfo(models.Model):
dhmosname = models.CharField(max_length=150, verbose_name='Δήμος', null=False)
dhmosde = models.CharField(max_length=150, verbose_name='Δημοτική Ενότητα', null=True)
dhmostmhma = models.CharField(max_length=150, choices=tmhma_choice, verbose_name=΄'Τμήμα', null=False)

class Meta:
verbose_name = 'Πληροφορίες Δήμου'
verbose_name_plural = 'Πληροφορίες Δήμου'

def __str__(self):
return self.dhmosname



class Employee(models.Model):
name = models.CharField(max_length=150, verbose_name='¨Ονομα υπαλλήλου', null=False)
phone = models.CharField(max_length=150, verbose_name='Τηλέφωνο υπαλλήλου', null=False)
dhmosinfo = models.ForeignKey('Dhmosinfo',on_delete=models.CASCADE)

class Meta:
verbose_name = 'Υπάλληλος'
verbose_name_plural = 'Υπάλληλος'

def __str__(self):
return self.name
Πρέπει να είστε εγγεγραμμένο μέλος του Φόρουμ για να κάνετε μια δημοσίευση.
Συντονιστές: pmav99
Χρόνος δημιουργίας σελίδας: 0.728 δευτερόλεπτα

Μοιράσου το!

Powered by CoalaWeb

Λίστα Ταχυδρομείου