DaingneáinLink to this heading

Is bailiúchán comhaid é daingneamh ina bhfuil ábhar sraitheach an bhunachar sonraí. Tá ainm uathúil ag gach daingneán, agus is féidir na comhaid a chuimsíonn an daingneán a dháileadh thar eolairí iolracha, in iolrfheidhmchláir.

Conas daingneán a tháirgeadhLink to this heading

<dumpdata>Is féidir daingneáin a ghiniúint trí:djadmin: `manage.py dumpdata `. Is féidir daingneáin saincheaptha a ghiniúint freisin trí úsáid a bhaint as go díreach: doc: `uirlisí sraitheach' nó fiú trí iad a lámhscríobh </topics/serialization>.

Conas daingneán a úsáidLink to this heading

<topics-testing-fixtures>Is féidir daingneáin a úsáid chun an bunachar sonraí a réamh-dhaonrú le sonraí le haghaidh: ref: `tástálacha `:

Python
class MyTestCase(TestCase):
    fixtures = ["fixture-label"]

nó chun roinnt: ref: sonraí tosaigh `a sholáthar ag baint úsáide as an ordú <initial-data-via-fixtures>:djadmin: `loaddata:

Shell
django-admin loaddata <fixture label>

Conas a aimsítear daingneáinLink to this heading

Déanfaidh Django cuardach sna háiteanna seo le haghaidh daingneáin:

  1. In eolaire ``daingneáin ``de gach feidhmchlár suiteáilte

  2. In aon eolaire atá liostaithe sa socrú: FIXTURE_DIRS

  3. Sa chosán litriúil a ainmníonn an daingneán

Luchtálfaidh Django aon daingneáin agus gach daingneán a aimsíonn sé sna háiteanna seo a mheaitseálann leis na hainmneacha daingneáin Má tá síneadh comhad ag an daingneán ainmnithe, ní luchtálfar ach daingneáin den chineál sin. Mar shampla:

Shell
django-admin loaddata mydata.json

ní dhéanfaí ach daingneáin JSON ar a dtugtar mydata a luchtú. Caithfidh an síneadh daingneáin a fhreagraíonn d'ainm cláraithe a: ref: serializer <serialization-formats>`(m.sh., ``json` nó xml).

Má fhágann tú na síntí, cuardóidh Django gach cineál daingneáin atá ar fáil le haghaidh daingneáin mheaitseála. Mar shampla:

Shell
django-admin loaddata mydata

lorgaíodh aon daingneán d'aon chineál daingneáin ar a dtugtar mydata`. mbeadh `mydata.json i eolaire daingneáin, luchtálfaí an daingneán sin mar daingneán JSON.

Is féidir comhpháirteanna eolaire a bheith san áireamh ar na daingneáin a Cuirfear na heolairí seo san áireamh sa chosán cuardaigh. Mar shampla:

Shell
django-admin loaddata foo/bar/mydata.json

chuardódh sé <app_label>/fixtures/foo/bar/mydata.json do gach feidhmchlár suiteáilte, /foo/bar/mydata.json do gach eolaire in:setting: FIXTURE_DIRS, agus an cosán litriúil foo/bar <dirname>/mydata.json.

Ordú luchtaithe daingneoLink to this heading

Is féidir daingneáin iolracha a shonrú san ionchur céanna. Mar shampla:

Shell
django-admin loaddata mammals birds insects

nó i rang cásanna tástála:

Python
class AnimalTestCase(TestCase):
    fixtures = ["mammals", "birds", "insects"]

Leanann an t-ord ina luchtaítear daingneáin an t-ord ina bhfuil siad liostaithe, cibé acu agus an t-ordú bainistíochta á úsáid agat nó nuair a liostaítear iad i rang an cháis tástála mar a thaispeántar thuas.

Sna samplaí seo, luchtálfar na daingneáin go léir darb ainm mamaí ``ó gach feidhmchlár (san ord ina sainmhínítear feidhmchláir in:setting: `INSTALLED_APPS`) ar dtús. Ina dhiaidh sin, luchtálfar na daingneáin ``éan go léir, agus ina dhiaidh sin beidh na daingneáin ``feithidí ``go léir ina dhiaidh sin.

Bí ar an eolas má thacaíonn cúltaca an bhunachar sonraí le srianta leibhéal sraithe, déanfar na srianta seo a sheiceáil ag deireadh an idirbheart. D'fhéadfadh earráid ualaigh a bheith mar thoradh ar aon chaidrimh ar fud daingneáin mura dtacaíonn cumraíocht an bhunachar sonraí le seiceáil srianta iarchurtha (féach do na doiciméid MySQL mar shampla).

Conas a shábháil daingneáin sa bhunachar sonraíLink to this heading

When fixture files are processed, the data is saved to the database as is. Model defined save() methods are not called, and any pre_save, post_save, or m2m_changed signals will be called with raw=True since the instance only contains attributes that are local to the model. You may, for example, want to disable handlers that access related fields that aren't present during fixture loading and would otherwise raise an exception:

Code
from django.db.models.signals import post_save
from .models import MyModel


def my_handler(**kwargs):
    # disable the handler during fixture loading
    if kwargs["raw"]:
        return
    ...


post_save.connect(my_handler, sender=MyModel)

D'fhéadfá maisitheoir a scríobh freisin chun an loighic seo a chumhdú:

Code
from functools import wraps


def disable_for_loaddata(signal_handler):
    """
    Decorator that turns off signal handlers when loading fixture data.
    """

    @wraps(signal_handler)
    def wrapper(*args, **kwargs):
        if kwargs["raw"]:
            return
        signal_handler(*args, **kwargs)

    return wrapper


@disable_for_loaddata
def my_handler(**kwargs): ...

Bí ar an eolas go ndéanfaidh an loighic seo na comharthaí a dhíchumasú aon uair a dhíshealtar daingneáin, ní hamháin le linn: djadmin: loaddata.

Daingneáin chomhbhLink to this heading

Féadfar daingneáin a chomhbhrúite i bhformáid zip, gz`, bz2`, lz`, nó xz. Mar shampla:

Shell
django-admin loaddata mydata.json

lorg aon cheann de mydata.json`, mydata.json.zip`, mydata.json.gz`, mydata.json.gz`, mydata.json.xz`, mydata.json.lz`, nó mydata.json.xz. Úsáidtear an chéad chomhad atá laistigh de chartlann comhbhrúite.

Tabhair faoi deara má aimsítear dhá daingneán leis an ainm céanna ach cineál daingneáin difriúil (mar shampla, má aimsíodh mydata.json agus mydata.xml.gz` san eolaire daingneáin chéanna), cuirfear deireadh leis an suiteáil daingneáin, agus bainfear aon sonraí suiteáilte sa ghlao chu:djadmin: loaddata ón mbunachar sonraí.

Daingneáin sonrach le bunachar sonraíLink to this heading

Má tá tú i socrú ilbhunachar sonraí, b'fhéidir go mbeadh sonraí daingneáin agat ar mhaith leat a luchtú ar bhunachar sonraí amháin, ach ní ar bhunachar sonraí eile. Sa chás seo, is féidir leat aitheantóir bunachar sonraí a chur isteach in ainmneacha do daingneáin.

Mar shampla, má tá bunachar sonraí users sainithe ag do shuíomh: DATABASES, ainmnigh an daingneán mydata.users.jsonmydata.users.json.gz agus ní luchtálfar an daingneán ach nuair a shonraíonn tú gur mhaith leat sonraí a luchtú isteach sa bhunachar sonraí users.