2010-11-18 30 views
2

Olası yinelenen sonra Django modelini yapar: Ben postgresql içinde veri türü metin [] sütunları biri bir tablo zekâ var
How to map PostgreSQL array field in Django ORMnasıl metin [] postgresql içinde

. Bu sütuna django modelleri orm kullanarak nasıl erişebilirim? Bildiğim kadarıyla parçalanmış bir uzay aracı olduğunun farkındayım, ama metinle ilgili alanlar için böyle bir şey yok. Metin alanını mı kullanıyorsunuz yoksa bunun için özel bir alan mı oluşturmalıyım?

+1

lütfen ayrıntılandırın. – Thomas

+0

@Thomas, sorumu düzenledim. – goh

+0

DB dizesinde bir dizi diziyi kaydetmeye mi çalışıyorsunuz? Bunu yapma. Her dize ayrı bir satırda olmalıdır. Bire bir ilişki ile ayrı bir tablo oluşturmanız gerekebilir. – mpen

cevap

2

Django ORM'in PostgreSQL dizilerini desteklediğini sanmıyorum. Bu, PostgreSQL'e özgü bir özellik gibi gözüktüğü için şaşırtıcı değil. Gerçekten dizileri kullanmanız gerekiyorsa, en iyi seçim SQL sorgularını elle metin olarak oluşturmaktır. Aksi takdirde, Mark önerdiği gibi dizi sütunlarını tablolara dönüştürün; Bu, daha taşınabilir ve kavramsal olarak temiz bir çözümdür (performans düşük olsa da).

+0

Şu sütunu kullanıyorum aslında belirteçli metin depolayın. 1-1 işlenmemiş metnimle. Satır başına 1 jeton kullanırsam, overkill gibi görünür. – goh

+0

Veritabanları büyük miktarlarda veri için tasarlanmıştır, bu yüzden endişelenmeyin. Bu karara şu şekilde yaklaşırım: 1) uygulamak için daha basit olan çözümle devam edin, 2) eğer ikisi de eşit derecede basitse, diziyi satırlara ayırıp daha az belirsiz olduğu gibi gidin. –

+0

"Django ORM'in PostgreSQL dizilerini desteklediğini sanmıyorum": https://github.com/django/django/pull/2485 ile değişecek – Medorator

1

Genellikle PostgreSQL dizi alanının doğru çözüm olduğu zamanlar vardır. Örneğin, eski bir veritabanı ile çalışırken. Github ile ilgili django-dbarray projesi bunun için destek sağlıyor. Kullanmamıştım, ancak kullanım temelde olduğu gibi görünüyor:

from django.db import model 
import dbarray 

class Person(models.Model): 
    birthdate = models.DateField() 
    nicknames = dbarray.TextArrayField()