WebHU - Programozási kérdések és válaszok

Hogyan hozhatok létre függvényalapú indexet a Python-modell-migrációm során?

Django-t, Python 3.7-et és PostGres 9.5-öt használok. Egy adott lekérdezés felgyorsítása érdekében létre szeretném hozni ezt a funkcionális indexet, amit általában a PostGres-ben megtennék, például...

CREATE INDEX my_article_idx ON article (regexp_replace(url, '\?.*$', ''))

A Django és az automatikusan generált migrációk világában azonban nem tudom, hogyan jelöljem meg az osztályomat a models.py fájlomban, hogy ez a függvényalapú index automatikusan létrejöjjön. A kérdéses mező a modellemben így néz ki...

class Article(models.Model):
    ...
    url = models.TextField(default='', null=False)

Válaszok:


1

Létre kell hoznia egy adatmigrációt. Tudjon meg többet róluk a dokumentumokban

1. lépés – hozzon létre egy üres adatmigrációs fájlt

python manage.py makemigrations --empty yourappname

2. lépés – Adjon hozzá egyéni SQL-t az áttelepítéshez:

# -*- coding: utf-8 -*-
# Generated by Django 1.11.14 on 2018-09-20 08:01
from __future__ import unicode_literals

from django.db import migrations


class Migration(migrations.Migration):

    dependencies = [
        ('yourapp', '0001_name_of_depending_migration'),
    ]

    operations = [
        migrations.RunSQL(
            sql="CREATE INDEX my_article_idx ON article (regexp_replace(url, '\?.*$', ''))",
            reverse_sql='DROP INDEX my_article_idx ON article'
        )
    ]
17.03.2019
  • Üdvözlöm! Már számos áttelepítést generáltam az appname/migrations mappámban, köztük egy appname/migrations/0001_initial.py fájlt. Ennek fényében hogyan csinálnám, amit javasolsz? 18.03.2019
  • Ha aggódik a függőségek miatt, a Django helyesen választja ki az utolsó migrációt a migrációs mappából, amikor üres migrációt generál. Csak futtassa ezt a parancsot az 1. lépéstől. Vagy valami másnál ragadt? 18.03.2019
  • Ah, zavarba jöttem, hogy mit csinált ez a kijelentés. De minden úgy működik, ahogy leírtad. Kösz 19.03.2019
  • Új anyagok

    A rádiógomb ellenőrzött eseményének használata a jQueryben
    Ebben a cikkben látni fogjuk, hogyan kell dolgozni a jquery választógombbal ellenőrzött eseményeivel. A választógombok HTML gombok, amelyek segítenek kiválasztani egyetlen értéket egy csoportból...

    Körkörös függőségek megoldása terraformban adatforrásokkal – lépésről lépésre
    Mi az a körkörös függőségek Dolgozzunk egy egyszerű eseten, amikor az SQS-sor és az S3-vödör közötti körkörös függőség problémája van egy egymástól függő címkeérték miatt. provider..

    Miért érdemes elkezdeni a kódolást 2023-ban?
    01100011 01101111 01100100 01100101 — beep boop beep boop Világunk folyamatosan fejlődik a technológia körül, és naponta fejlesztenek új technológiákat a valós problémák megoldására. Amint..

    🎙 Random Noise #2  – Örökbefogadás és hit
    az analitika íratlan világának gondozása Szeretné, hogy ezek a frissítések a postaládájába kerüljenek? Iratkozzon fel itt . "Ha önvezető autókat gyártanak, akkor mi miért ne..

    A legrosszabb politika és prediktív modellek májátültetésre jelöltek számára az Egyesült Államokban
    A máj (vagy óangolul lifer) az emberi test legnehezebb belső szervére utal, amely csendesen működik a nap 24 órájában. Mit csinál a máj? 500 feladatot hajt végre a szervezet egészségének..

    5 webhely, amely 2022-ben fejleszti front-end fejlesztői készségeit
    Frontendmentor.io A tényleges projektek létrehozásával a Frontendmentor.io segítséget nyújt a front-end kódolási képességeinek fejlesztésében. A kódolást azután kezdheti meg, hogy..

    Mikor kell használni a Type-t az interfészhez képest a TypeScriptben?
    A TypeScript a JavaScript gépelt szuperkészlete, amely statikus gépelést ad a nyelvhez. Ez megkönnyíti a robusztus és karbantartható kód írását azáltal, hogy a hibákat a fordítási időben..