Jaki jest najlepszy sposób przechowywania tablicy liczb całkowitych w bazie danych django?Przechowywanie tablicy całkowitej w bazie danych Django
Odpowiedz
CommaSeparatedIntegerField przychodzi na myśl natychmiast. Jest on zaimplementowany jako VARCHAR
w większości baz danych. Aby być pewnym, możesz jednak przejrzeć wersję django/db/backends/*
.
Aby uzyskać opis możliwej alternatywnej wersji programu CommaSeparatedIntegerField, który wykonałby więcej pracy za ciebie (konwertowanie z listy na łańcuch iz powrotem), zobacz stronę this answer. Może mógłbyś sprawdzić z tym facetem, czy już to napisał :-)
Jeśli korzystasz z PostgreSQL, możesz przechowywać typy tablicowe natywnie.
Patrz na przykład: https://github.com/aino/django-arrayfields i https://github.com/ecometrica/django-dbarray
Wybrano odpowiedź nie jest poprawna dla późniejszego Django wersji tj CommaSeparatedIntergerField
ma bardziej dostępny od Django 1.9:
Przestarzałe od wersji 1.9 : To pole jest przestarzałe na rzecz
CharField
z walidatorami = [validate_comma_separated_integer_list].
domyślnie ustawia oddzielony przecinkami listy całkowitą dziedzinie.
Zwraca instancję RegexValidator który zapewnia ciąg składa się z liczb oddzielonych SEP. Pozwala ujemnym liczbom całkowitym, gdy 01_allow_negative ma wartość True.
from django.db import models
from django.core.validators import int_list_validator
class YourModel(models.Model):
....
....
int_list = models.CharField(validators=int_list_validator)
....
że w zasadzie oznacza, że muszę konwertować ciąg liczb całkowitych z powrotem do siebie? – Christian
To jest super stara informacja. Aktualna strona deweloperska (ani aktualna: [v1.11] (https://docs.djangoproject.com/en/1.11/ref/models/fields/#commaseparatedintegerfield)), która nie została powiązana, nie wspomina o CommaSeparatedIntegerField . – VertigoRay