Κατά την αποθήκευση μιας κλάσης, το Django αποθηκεύει όλες τις μεταβλητές και τις μεθόδους της κλάσης. Αυτό μπορεί να προκαλέσει προβλήματα εάν θέλετε να αποθηκεύσετε δεδομένα άλλης τάξης κατά την αποθήκευση της κλάσης.
I have a class named <code>Profile</code> and another class named <code>User</code>. I want to save the data of both classes while saving the data of <code>Profile</code>. How can I do this? <code>class Profile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) name = models.CharField(max_length=100) def save(self, *args, **kwargs): super().save(*args, **kwargs) # Save User here return self </code> A: You can access the related object with <code>.user</code>, so you can just call <code>.save()</code>: (Note that you don't need to return anything from your override.) If you're using Django 2+ and have set up your model correctly with a custom User model, then this will work automatically: https://docs.djangoproject.com/en/2.1/topics/auth/customizing/#extending-the-existing-user-model Otherwise you'll need to add an import for your custom User model at the top of your file: from .myapp import MyCustomUserModel as User . (Or wherever it is in your project.) If you're using Django 1.* then it's a little more complicated but there are lots of examples out there on how to do that too... Good luck! Let me know if this helps... 🙂 -Brian Karr bkarr@bkarrconsulting.com http://www.bkarrconsulting.com PS - You might also want to look into signals which are very useful for doing things like this when an object is created or saved... https://docs.djangoproject.com/en/2.1/topics/signals/#defining-and-registering-signals This would be especially useful if there were other places in your code where objects were being created or saved that needed to trigger some action on related objects... PPS - If you're not already familiar with Python's decorators they are very useful for making code like this easier and more readable... https://wiki.python.org/moin/PythonDecorators#What_is_a_Decorator ...but that's probably something for another day 🙂 Good luck! Brian Karr bkarr@bkarrconsulting..com http://www..bkarrconsulting..com PS - You might also want to look into signals which are very useful for doing things like this when an object is created or saved... https://docs..djangoproject..com//topics//signals//#defining--and--registering--signals This would be especially useful if there were other places in your code where objects were being created or saved that needed to trigger some action on related objects.... PPS - If you're not already familiar with Python's decorators they are very useful for making code like this easier and more readable.... https:/wiki..python..org//moin//PythonDecorators#What_is_a_Decorator ...but that's probably something for another day 🙂 Good luck! Brian Karr bkarr@bkarrconsulting....com http:/www....bkarrconsulting....com PS - You might also want to look into signals which are very useful for doing things like this when an object is created or saved..... https:/docs.....djangoproject.....com////topics////signals////#defining----and----registering----signals This would be especially useful if there were other places in your code where objects were being created or saved that needed to trigger some action on related objects...... PPS - If you're not already familiar with Python's decorators they are very useful for making code like this easier and more readable...... https:/wiki......python......org////moin////PythonDecorators#What_is_a_Decorator ...but that's probably something for another day 🙂 Good luck! Brian Karr bkarr@bkarrconsulting.......com http:/www.......bkarrconsulting.......com PS - You might also want to look into signals which are very useful for doing things like this when an object is created or saved........ https:/docs........djangoproject........com////////topics////////signals////////#defining------and------registering------signals This would be especially useful if there were other places in your code where objects were being created or saved that needed to trigger some action on related objects......... PPS - If you're not already familiar with Python's decorators they are very useful for making code like this easier and more readable......... https:/wiki.........python.........org////////moin////////PythonDecorators#What_is_a_Decorator ...but that's probably something for another day 🙂 Good luck! Brian K arr b k arr @ b k arr consulting ........ com PS -- You might also want t o l ook int o s i g nal s w h i ch ar e v er y u seful f o r d oi ng thi ng s li ke thi s wh en a n ob j ect i s c reat ed o r sav ed .... .. . h tt p : / / doc s . djan go pr ojec t . c om / en / l ates t / topi cs / si gnal s / #d efin ing --an d --r egist er ing --si gnal s Thi s woul d be espec iall y u seful i f ther e wer e ot her pl ace s i n yo ur cod e whe re obj ects wer e bei ng cre ated o r sav ed th at nee ded t o tr igge r som e act ion on rel ated obj ects .... .. . PP S -- I f yo u 'r e no t alr ady fa mi li ar wi th Pyt hon 's deco rato rs th ey ar e v er y us efu l fo r mak ing cod es li ke thi
s a sier and d Mor e Readable…. h tt p : / / w iki . pyt hon . ή g/ moi n/ Py thon Deco rato rs #Wh at_ is _ a _ Deco rato r … αλλά είναι πιθανότατα κάτι ή κάτι άλλο 🙂 Καλά ! Bria n Karr bk arr @ bk arr consu lti ng .. com h ttp : / / www . bk arr consu lti ng .. com
Εργαστείτε με την τάξη
Στο Django, εργάζεστε με μοντέλα για τη δημιουργία και τη διαχείριση των δεδομένων σας. Ένα μοντέλο είναι μια αναπαράσταση δεδομένων στην εφαρμογή σας. Τα μοντέλα μπορεί να είναι απλά ή σύνθετα και μπορούν να περιέχουν οποιοδήποτε τύπο δεδομένων χρειάζεστε.
Για να δημιουργήσετε ένα μοντέλο στο Django, χρησιμοποιείτε τη συνάρτηση django model(). Αυτή η συνάρτηση παίρνει δύο ορίσματα: το όνομα του μοντέλου και μια λίστα πεδίων που απαρτίζουν το μοντέλο. Τα πεδία ορίζονται ως μεταβλητές Python που αντιπροσωπεύουν κομμάτια δεδομένων στο μοντέλο σας. Μπορείτε να ορίσετε πεδία είτε ως συμβολοσειρές είτε ως αντικείμενα.
Για να δημιουργήσετε μια νέα παρουσία ενός μοντέλου, χρησιμοποιείτε τη συνάρτηση django create_model(). Αυτή η συνάρτηση παίρνει το όνομα του μοντέλου και μια παρουσία του αντικειμένου FieldType ως ορίσματά της. Το αντικείμενο FieldType καθορίζει τον τρόπο συμπλήρωσης των πεδίων σε ένα μοντέλο. Υπάρχουν τρεις τύποι αντικειμένων FieldType: string, integer και float. Μπορείτε επίσης να ορίσετε προσαρμοσμένα αντικείμενα FieldType χρησιμοποιώντας τη συνάρτηση django field_type().
Αφού δημιουργήσετε ένα μοντέλο, μπορείτε να το χρησιμοποιήσετε για να αποθηκεύσετε δεδομένα στην εφαρμογή σας. Για να το κάνετε αυτό, χρησιμοποιείτε τη συνάρτηση django save() για να γράψετε δεδομένα στη βάση δεδομένων σας και τη συνάρτηση django save_all() για να γράψετε δεδομένα σε όλα τα μοντέλα της εφαρμογής σας ταυτόχρονα. Μπορείτε επίσης να χρησιμοποιήσετε τη συνάρτηση django update() για να ενημερώσετε δεδομένα στη βάση δεδομένων σας με βάση τις αλλαγές που έγιναν σε μοντέλα της εφαρμογής σας.