تم حلها: حفظ django بيانات فئة أخرى أثناء حفظ الفصل

عند حفظ فئة ، يحفظ 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

لا تفوتك…. ح tt ع: / / w iki. بيت هون. أو 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 مخصصة باستخدام دالة django field_type ().

بمجرد إنشاء نموذج ، يمكنك استخدامه لتخزين البيانات في تطبيقك. للقيام بذلك ، يمكنك استخدام وظيفة django save () لكتابة البيانات إلى قاعدة البيانات الخاصة بك ووظيفة django save_all () لكتابة البيانات إلى جميع النماذج في التطبيق الخاص بك في وقت واحد. يمكنك أيضًا استخدام وظيفة django update () لتحديث البيانات في قاعدة البيانات الخاصة بك بناءً على التغييرات التي تم إجراؤها على النماذج في تطبيقك.

الوظائف ذات الصلة:

اترك تعليق