Решено: дјанго чува податке друге класе док чува класу

Када чува класу, Дјанго чува све променљиве инстанце и методе класе. Ово може изазвати проблеме ако желите да сачувате податке друге класе док чувате класу.

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

лакше и читљивије … . х тт п : // в ики . пит хон . или г/ мои н/ Пи тхон Децо рато рс #Вх ат_ ис _ а _ Децо рато р … али тх ат 'с пробабли соме тхи нг ф ор от хер даи 🙂 Срећно! Бриа н Карр бк арр @ бк арр цонсу лти нг .. цом х ттп : // ввв. бк арр цонсу лти нг .. цом

Радите са разредом

У Дјангу радите са моделима да бисте креирали и управљали својим подацима. Модел је приказ података у вашој апликацији. Модели могу бити једноставни или сложени и могу садржати било коју врсту података која вам је потребна.

Да бисте креирали модел у Дјангу, користите функцију дјанго модел(). Ова функција узима два аргумента: име модела и листу поља која чине модел. Поља су дефинисана као Питхон променљиве које представљају делове података у вашем моделу. Поља можете дефинисати или као стрингове или као објекте.

Да бисте креирали нову инстанцу модела, користите функцију дјанго цреате_модел(). Ова функција узима име модела и инстанцу ФиелдТипе објекта као своје аргументе. Објекат ФиелдТипе дефинише како поља у моделу треба да буду попуњена. Постоје три типа ФиелдТипе објеката: стринг, цео број и флоат. Такође можете дефинисати прилагођене ФиелдТипе објекте користећи дјанго функцију фиелд_типе().

Када креирате модел, можете га користити за складиштење података у вашој апликацији. Да бисте то урадили, користите функцију дјанго саве() за уписивање података у вашу базу података и функцију дјанго саве_алл() за писање података у све моделе у вашој апликацији одједном. Такође можете користити функцију дјанго упдате() да ажурирате податке у вашој бази података на основу промена направљених на моделима у вашој апликацији.

Релатед постс:

Оставите коментар