Tom, Null, og der Kræves i Django Modeller og ModelForms

Så langt jeg har ikke stødt på en klar forklaring på tom, null, og der kræves – i Django ‘ s modeller og former.


Jeg kender den standard for hver er følgende:

blank = False
null = False
required = True

Jeg ved også, at:

blank=True (bruges i models.py), betyder på den form, niveau, acceptere tomme former – det tilknyttede felt er ikke påkrævet i en form.

null=True (bruges i models.py), betyder på database-niveau, en tom streng, vil blive gemt som NULL i modsætning til en tom version af tilhørende data type.

required=False (bruges i forms.py), betyder det tilhørende felt er ikke påkrævet.


Forhåbentlig ovenstående oplysninger vil tjene andre (lad mig vide, hvis der er nogen fejl i logikken, og jeg vil opdatere den).

Mit spørgsmål er følgende:

Hvornår skal jeg vide, hvornår du skal bruge blank=True vs. required=False. Hvis mit mål er at lave en form område, der ikke krævede, at jeg kunne definere dette i modellen ved hjælp af blank=True, eller jeg kunne definere dette i form ved hjælp af required=False. Betyder dette, kan du definere blank=True i en model, og i den forbindelse ModelForm tilsidesætte denne med required=True?

Også relateret, hvad så når du bruger en almindelig form (forms.Form)? Da den formular, der ikke er forbundet med en model (andre end ved at se logik), hvad sker der, hvis en gang, de er i modstrid med hinanden?

Når det modsiger det, hvis formularen ikke er forbundet med en model.

OriginalForfatteren Joker | 2013-06-19

2 svar

  1. 8

    De modsætninger, der ikke betyder noget. Jeg tror, det giver fleksibilitet til udvikling af en Django ansøgning. For eksempel, hvis du bruger en tredjeparts-bibliotek som definerer nogle modeller, og de satte blank=True, men til andre formål, som du har brug for, at feltet er obligatorisk, så i former, som du kan ordne det uden at røre ved den tredje part bibliotek kode.

    Dette blot tilføje en vis fleksibilitet i de rammer, IMHO, der bringer ingen skade. Du kan bruge det til dit eget formål. De modsætninger, der er ikke signifikant.

    Håber dette hjælper!

    Tak igen, det giver mening, og giver også en masse mere magt til formularer.
    Du er meget velkommen 🙂
    Det er et godt svar, som forklarer årsagen og dens use case.

    OriginalForfatteren Paulo Bu

  2. 2

    Det afhænger af, om kravet. Engang vi senere beslutter, at gøre obligatorisk felt på formen, selv om den model, det er stadig ikke påkrævet. Men formen vil sikre, at feltet skal være fyld.

    Du kan have null=True på den model, og senere kan du gøre det obligatorisk felt på formularen. Men du kan ikke gøre et felt ekstraudstyr i form, når det er obligatorisk model, der vil resultere i en database fejl på et senere tidspunkt.

    Området vil være obligatoriske på den formular, hvis null=True i modellen. Kun blank=True i Modellen sætter required=False i den tilsvarende ModelForm. Jeg er blevet brændt af denne fn-intuitive aspekt af modellen, før

    OriginalForfatteren Aamir Adnan

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *