Szukaj…


Parametry

Parametr Detale
zero Jeśli true, puste wartości mogą być przechowywane w bazie danych jako null
pusty Jeśli to prawda, to pole nie będzie wymagane w formularzach. Jeśli pola pozostaną puste, Django użyje domyślnej wartości pola.
wybory Iterowalna 2-elementowa iteracja, która ma być używana jako wybór dla tego pola. Jeśli ustawione, pole jest renderowane jako administrator w menu rozwijanym. [('m', 'Male'),('f','Female'),('z','Prefer Not to Disclose')] . Aby pogrupować opcje, po prostu zagnieżdż wartości: [('Video Source',((1,'YouTube'),(2,'Facebook')),('Audio Source',((3, 'Soundcloud'),(4, 'Spotify'))]
db_column Domyślnie django używa nazwy pola dla kolumny bazy danych. Użyj tego, aby podać niestandardową nazwę
db_index W przypadku wartości True w tym polu w bazie danych zostanie utworzony indeks
db_tablespace Obszar tabel używany dla indeksu tego pola. To pole jest używane tylko wtedy, gdy silnik bazy danych je obsługuje, w przeciwnym razie zostanie zignorowane .
domyślna Wartość domyślna dla tego pola. Może być wartością lub obiektem na żądanie. W przypadku zmiennych domyślnych (lista, zestaw, słownik) należy użyć funkcji wywoływania. Ze względu na zgodność z migracjami nie można używać lambd.
edytowalne Jeśli ma wartość False , pole nie jest pokazywane w modelu administracyjnym ani żadnym ModelForm . Domyślna wartość to True .
komunikaty o błędach Służy do dostosowywania domyślnych komunikatów o błędach wyświetlanych dla tego pola. Wartością jest słownik, w którym klucze reprezentują błąd, a wartością jest komunikat. Domyślne przyciski (komunikaty o błędach) jest null , blank , invalid , invalid_choice , unique i unique_for_date ; dodatkowe komunikaty o błędach mogą być zdefiniowane przez pola niestandardowe.
Tekst pomocy Tekst wyświetlany z polem, aby pomóc użytkownikom. HTML jest dozwolony.
on_delete Po usunięciu obiektu, do którego odwołuje się ForeignKey, Django będzie emulować zachowanie ograniczenia SQL określonego przez argument on_delete. Jest to drugi argument pozycyjny dla pól ForeignKey i OneToOneField . Inne pola nie mają tego argumentu.
klucz podstawowy Jeśli True , to pole będzie kluczem podstawowym. Django automatycznie dodaje klucz podstawowy; jest to wymagane tylko wtedy, gdy chcesz utworzyć niestandardowy klucz podstawowy. Możesz mieć tylko jeden klucz podstawowy na model.
wyjątkowy Jeśli ma wartość True , błędy są zgłaszane, jeśli dla tego pola zostaną wprowadzone zduplikowane wartości. Jest to ograniczenie na poziomie bazy danych, a nie tylko blok interfejsu użytkownika.
unikatowa_data Ustaw wartość na DateField lub DateTimeField , a błędy będą zgłaszane, jeśli będą zduplikowane wartości dla tej samej daty lub godziny .
Unique_for_month Podobnie jak w przypadku unique_for_date , z tym że czeki są ograniczone w danym miesiącu.
niepowtarzalny_do_roku Podobnie jak w przypadku unique_for_date , z tym że czeki są ograniczone do roku.
pełna nazwa Przyjazna nazwa pola, używana przez django w różnych miejscach (np. Tworzenie etykiet w formularzach administratora i modelu).
walidatory Lista walidatorów dla tego pola.

Uwagi

  • Możesz napisać własne pola, jeśli uznasz to za konieczne
  • Możesz zastąpić funkcje klasy modelu podstawowego, najczęściej funkcję save()

Pola liczbowe

Podano przykłady pól numerycznych:

AutoField

Automatycznie zwiększająca się liczba całkowita stosowana zwykle do kluczy podstawowych.

from django.db import models

class MyModel(models.Model):
    pk = models.AutoField()

Każdy model domyślnie otrzymuje pole klucza podstawowego (zwane id ). Dlatego nie jest konieczne duplikowanie pola identyfikatora w modelu dla celów klucza podstawowego.


BigIntegerField

Liczbą całkowitą dopasowanie liczby od -9223372036854775808 do 9223372036854775807 ( 8 Bytes ).

from django.db import models

class MyModel(models.Model):
    number_of_seconds = models.BigIntegerField()

IntegerField

Pole IntegerField służy do przechowywania wartości całkowitych od -2147483648 do 2147483647 ( 4 Bytes ).

from django.db import models

class Food(models.Model):
    name = models.CharField(max_length=255)
    calorie = models.IntegerField(default=0)

parametr default nie jest obowiązkowy. Ale warto ustawić wartość domyślną.


PositiveIntegerField

Podobnie jak IntegerField, ale musi być dodatni lub zerowy (0). PositiveIntegerField służy do przechowywania wartości całkowitych od 0 do 2147483647 ( 4 Bytes ). Może to być przydatne w polu, które powinno być semantycznie dodatnie. Na przykład, jeśli rejestrujesz żywność z jej kaloriami, nie powinna być ujemna. To pole zapobiegnie ujemnym wartościom poprzez swoje walidacje.

from django.db import models

class Food(models.Model):
    name = models.CharField(max_length=255)
    calorie = models.PositiveIntegerField(default=0)

parametr default nie jest obowiązkowy. Ale warto ustawić wartość domyślną.


SmallIntegerField

SmallIntegerField służy do przechowywania wartości całkowitych od -32768 do 32767 ( 2 Bytes ). To pole jest przydatne, gdy wartości nie są skrajnościami.

from django.db import models

class Place(models.Model):
    name = models.CharField(max_length=255)
    temperature = models.SmallIntegerField(null=True)

PositiveSmallIntegerField

SmallIntegerField służy do przechowywania wartości całkowitych od 0 do 32767 ( 2 Bytes ). Podobnie jak SmallIntegerField, to pole jest przydatne w przypadku wartości, które nie są tak wysokie i powinny być semantycznie dodatnie. Na przykład może przechowywać wiek, który nie może być ujemny.

from django.db import models

class Staff(models.Model):
    first_name = models.CharField(max_length=255)
    last_name = models.CharField(max_length=255)
    age = models.PositiveSmallIntegerField(null=True)

Oprócz PositiveSmallIntegerField jest przydatny do wyboru, jest to sposób implementacji Enum w Djangoic:

from django.db import models
from django.utils.translation import gettext as _

APPLICATION_NEW = 1
APPLICATION_RECEIVED = 2
APPLICATION_APPROVED = 3
APPLICATION_REJECTED = 4

APLICATION_CHOICES = (
    (APPLICATION_NEW, _('New')),
    (APPLICATION_RECEIVED, _('Received')),
    (APPLICATION_APPROVED, _('Approved')),
    (APPLICATION_REJECTED, _('Rejected')),
)

class JobApplication(models.Model):
    first_name = models.CharField(max_length=255)
    last_name = models.CharField(max_length=255)
    status = models.PositiveSmallIntegerField(
        choices=APLICATION_CHOICES, 
        default=APPLICATION_NEW
    )
    ...

Dobrym sposobem na ich wykorzystanie jest zdefiniowanie wyborów jako zmiennych klas lub zmiennych modułów w zależności od sytuacji. Jeśli opcje zostaną przekazane do pola bez przyjaznych nazw, spowoduje to zamieszanie.


DecimalField

Liczba dziesiętna o stałej precyzji, reprezentowana w Pythonie przez instancję dziesiętną. W przeciwieństwie do IntegerField i jego pochodnych, w tym polu znajdują się 2 wymagane argumenty:

  1. DecimalField.max_digits : Maksymalna dozwolona liczba cyfr w liczbie. Zauważ, że liczba ta musi być większa lub równa dziesiętnym.
  2. DecimalField.decimal_places : liczba miejsc dziesiętnych do przechowywania wraz z liczbą.

Jeśli chcesz przechowywać liczby do 99 z 3 miejscami po przecinku, musisz użyć max_digits=5 i decimal_places=3 :

class Place(models.Model):
    name = models.CharField(max_length=255)
    atmospheric_pressure = models.DecimalField(max_digits=5, decimal_places=3)

BinaryField

Jest to wyspecjalizowana dziedzina służąca do przechowywania danych binarnych. Akceptuje tylko bajty . Dane są serializowane base64 podczas przechowywania.

Ponieważ są to dane binarne, tego pola nie można użyć w filtrze.

from django.db import models

class MyModel(models.Model):
    my_binary_data = models.BinaryField()

CharField

CharField służy do przechowywania określonych długości tekstu. W poniższym przykładzie w polu można zapisać do 128 znaków tekstu. Wprowadzenie dłuższego ciągu spowoduje zgłoszenie błędu sprawdzania poprawności.

from django.db import models

class MyModel(models.Model):
    name = models.CharField(max_length=128, blank=True)

DateTimeField

DateTimeField służy do przechowywania wartości daty i godziny.

class MyModel(models.Model):
    start_time = models.DateFimeField(null=True, blank=True)
    created_on = models.DateTimeField(auto_now_add=True)
    updated_on = models.DateTimeField(auto_now=True)

DateTimeField ma dwa opcjonalne parametry:

  • auto_now_add ustawia wartość pola na bieżącą auto_now_add kiedy obiekt jest tworzony.

  • auto_now ustawia wartość pola na bieżącą datę za każdym razem, gdy pole jest zapisywane.

Te opcje i parametr default wykluczają się wzajemnie.

ForeignKey

Pole ForeignKey służy do tworzenia relacji „ many-to-one między modelami. Nie tak, jak większość innych pól wymaga argumentów pozycyjnych. Poniższy przykład pokazuje relację samochodu i właściciela:

from django.db import models

class Person(models.Model):
    GENDER_FEMALE = 'F'
    GENDER_MALE = 'M'

    GENDER_CHOICES = (
        (GENDER_FEMALE, 'Female'),
        (GENDER_MALE, 'Male'),
    )

    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)
    gender = models.CharField(max_length=1, choices=GENDER_CHOICES)
    age = models.SmallIntegerField()


class Car(model.Model)
    owner = models.ForeignKey('Person')
    plate = models.CharField(max_length=15)
    brand = models.CharField(max_length=50)
    model = models.CharField(max_length=50)
    color = models.CharField(max_length=50)

Pierwszym argumentem pola jest klasa, z którą powiązany jest model. Drugi argument pozycyjny to argument on_delete . W bieżących wersjach ten argument nie jest wymagany, ale będzie wymagany w Django 2.0. Domyślna funkcjonalność argumentu jest pokazana następująco:

class Car(model.Model)
    owner = models.ForeignKey('Person', on_delete=models.CASCADE)
    ...

Spowoduje to usunięcie obiektów Car z modelu, gdy jego właściciel usunie z modelu Person. To jest domyślna funkcjonalność.

class Car(model.Model)
    owner = models.ForeignKey('Person', on_delete=models.PROTECT)
    ...

Zapobiegnie to usunięciu obiektów Person, jeśli są one powiązane z co najmniej jednym obiektem Car. Wszystkie obiekty Car, które odwołują się do obiektu Person, należy najpierw usunąć. Następnie obiekt osoby można usunąć.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow