Implémenter un processus de modification quotidienne des champs de modèle
dans un projet Django peut être complexe, mais c'est faisable. Voici
quelques points à considérer pour garantir que le processus fonctionne
efficacement dans un environnement de production :

✅Planification des tâches:
Pour automatiser la suppression et l'ajout de champs à une heure précise
chaque jour, vous pouvez utiliser un planificateur de tâches comme
**Celery** avec Django. Celery vous permet de gérer les tâches périodiques
de manière efficace. Vous pouvez également utiliser **Django-cron** pour
exécuter des tâches planifiées.

✅Gestion des migrations
Chaque fois que vous modifiez un modèle Django, vous devez créer et
appliquer des migrations pour mettre à jour la base de données. Vous pouvez
automatiser ce processus en utilisant des scripts qui exécutent les
commandes `makemigrations` et `migrate` de Django.

### Exemple de script pour les migrations
Voici un script de ce que j'avais utilisé  dans mon application des
migrations :
```python
import os
import django
from django.core.management import call_command
from datetime import datetime

# Configurer Django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'mon_projet.settings')
django.setup()

# Fonction pour mettre à jour les modèles
def update_models():
    # Supprimer le champ B
    call_command('makemigrations', 'mon_app', name='remove_field_b')
    call_command('migrate', 'mon_app')

    # Ajouter le nouveau champ E
    call_command('makemigrations', 'mon_app', name='add_field_e')
    call_command('migrate', 'mon_app')

# Planifier l'exécution quotidienne
if datetime.now().hour == 2:  # Remplacez 2 par l'heure souhaitée
    update_models()
```

Le mar. 4 févr. 2025, 06:03, Agar Joshua <joshuaaga...@gmail.com> a écrit :

> Hi I agree with alexei.ramo...@gmail.com renaming fields and doing
> migrations is definitely not the most optimal solution. I suggest you have
> generic names. Anything variable mostly ends up being a field on a table or
> a table, depending on your use case. I hope you figured that out though?
>
> On Wed, Jan 29, 2025 at 11:05 PM Alexei Ramotar <alexei.ramo...@gmail.com>
> wrote:
>
>> I'd just give the columns generic names and let react handle the names
>> you want to display which is probably based on dates or something cyclical.
>> Otherwise it seems like too much overhead in renaming fields and migration.
>>
>> On Wed, Jan 29, 2025, 2:56 PM 'Ryan Nowakowski' via Django users <
>> django-users@googlegroups.com> wrote:
>>
>>>
>>> On 1/27/25 7:41 AM, Mayank Prajapati wrote:
>>> > I am making a full stack project with JavaScript and react for front
>>> end , Postgre SQL for database and Django for backend and Django rest
>>> framework for APIs. So in models.py file there's one field which is to be
>>> removed and another field is to be added at the end. This process has to be
>>> done once daily at specific time. For example, assume there are five fields
>>> in my models i.e. A,B,C,D and E. At some specific time field B will be
>>> removed and new field E will be added after D, again same process will
>>> repeat next day field C will be removed and new field F will be added after
>>> E. I can implement this process through python file handling and "with"
>>> method.
>>> >
>>> > So my question is, should i implement this process in my Django
>>> project? Will this process work efficiently in production environment?
>>> >
>>>
>>> When you say "field" are these FileFields <
>>> https://docs.djangoproject.com/en/5.1/ref/models/fields/#filefield>?
>>> And when you say "removed" and "added", are you talking about actually
>>> removing the field from the model(via migrations <
>>> https://docs.djangoproject.com/en/5.1/topics/migrations/>) or setting
>>> that field to "None"(null) when you "remove" it?
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Django users" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to django-users+unsubscr...@googlegroups.com.
>>> To view this discussion visit
>>> https://groups.google.com/d/msgid/django-users/B1F2C8F6-766A-4515-ADEC-C72D59866E71%40fattuba.com
>>> <https://groups.google.com/d/msgid/django-users/B1F2C8F6-766A-4515-ADEC-C72D59866E71%40fattuba.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Django users" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to django-users+unsubscr...@googlegroups.com.
>> To view this discussion visit
>> https://groups.google.com/d/msgid/django-users/CACCvK-vi3ooiMfKAGpMYyme4c2jA1fxbvY3HD0tdBRn7oc%2Bx%2BQ%40mail.gmail.com
>> <https://groups.google.com/d/msgid/django-users/CACCvK-vi3ooiMfKAGpMYyme4c2jA1fxbvY3HD0tdBRn7oc%2Bx%2BQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>>
> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to django-users+unsubscr...@googlegroups.com.
> To view this discussion visit
> https://groups.google.com/d/msgid/django-users/CALHJg5%2BPWQXN3Wxnse8LZu%3Dm-1wgZ3S-EpCUk5hajMKR%3DPq3OA%40mail.gmail.com
> <https://groups.google.com/d/msgid/django-users/CALHJg5%2BPWQXN3Wxnse8LZu%3Dm-1wgZ3S-EpCUk5hajMKR%3DPq3OA%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/django-users/CA%2BGQzJMFKK6ejB4vXvcM%3DTEnGWreRi6gwYw6ZQ3R4HBgGO4aZg%40mail.gmail.com.

Reply via email to