2015-07-14 27 views
6

Bir Django sitesinden erişmek istediğim eski bir veritabanından iki tablom var. Onlar şuna benzer:Django'da birincil olmayan yabancı anahtarlar

Table A 
id (int, primary key) 
name (string, unique) 
... 

Table B 
id (int, primary key) 
name 
record_date 
(name, record_date are unique together) 
... 

nasıl Tablo AA.name=B.name üzerinde B ile bire çok ilişki vardır benim Django modeli anlatır? Düzenli ForeignKey ilişkisi, B'un name yerine A.id kullanılmasını gerektirir, ancak mevcut eski veritabanının yapısını değiştiremiyorum.

cevap

9

to_field ve db_column seçeneklerini kullanın. Eğer yabancı anahtar oluşturduktan sonra aşağıdaki gibi

class B(models.Model): 
    name = models.ForeignKeyField(A, to_field="name", db_column="name") 

, size değer ve ilgili örneğini erişebilir:

>>> b = B.objects.get(id=1) 
>>> b.name_id # the value stored in the 'name' database column 
>>> b.name # the related 'A' instance 
İlgili konular