2012-03-10 40 views
8

Tôi có một tập tin ở định dạng json, với một cấu trúc như vậy:nhập để mô hình Django

{ 
    "Admiralty Islands": [ 
     [ 
      "Up to 1 kg", 
      "5.00" 
     ], 
     [ 
      "1 - 10 kg", 
      "10.00" 
     ], 
    ], 
    "Afghanistan": [ 
     [ 
      "Up to 1 kg", 
      "15.00" 
     ], 
     [ 
      "1 - 10 kg", 
      "20.00" 
     ], 
    ], 
... 
} 

Và một ba mô hình:

class Country(models.Model): 
    name = models.CharField(max_length=128, unique=True) 

class Weight(models.Model): 
    name = models.CharField(max_length=128, unique=True) 
    min_weight = models.IntegerField() 
    max_weight = models.IntegerField() 

class Shipping(models.Model): 
    country = models.ForeignKey(Country) 
    weight = models.ForeignKey(Weight) 
    price = models.DecimalField(max_digits=7, decimal_places=2) 

cách chính xác nhất để nhập khẩu để là gì cơ sở dữ liệu bằng cách sử dụng một tập tin json?

Tôi có nên chuyển tệp json thành tệp lịch thi đấu không? Nhưng phải làm gì với mối quan hệ giữa các bảng? Hoặc là nó tốt hơn để viết view như:

f = open('file.json', 'r') 
obj = simplejson.load(f) 

for o in obj: 
    record = Country(name = o) 
    record.save() 

Nhưng cũng không thể tìm ra cách để làm cho mối quan hệ giữa models.

Hoặc có cách nào dễ dàng hơn không?

Cảm ơn.

Trả lời

3

Tôi không thấy một cấu trúc rất rõ ràng trong json của bạn theo nghĩa là nó không được định nghĩa rõ ràng ở bất kỳ đâu trường nào sẽ đi vào mô hình nào và mọi thứ có liên quan như thế nào. Vì vậy, tôi sẽ khuyên bạn nên chỉ để thực hiện một kịch bản nhập khẩu, trong đó tự đi qua tất cả các json và tạo ra các trường hợp mô hình thích hợp.

Một ví dụ tốt trong quan điểm của tôi về json được cấu trúc tốt là đầu ra của chuỗi tuần tự Django. Bạn có thể xem nó here.

2

Vâng cho dữ liệu trong json trở nên thông dụng với cơ sở dữ liệu:

  • Bạn cần để lập bản đồ các lĩnh vực dữ liệu từ json cơ sở dữ liệu.

  • Cách tốt nhất và được ưa thích hoặc đúng hơn là cách thiết kế để thực hiện việc này là sử dụng đồ đạc.

  • Để lập bản đồ Tuần tự hóa Django là cách để GO.

10

Sử dụng manage.py nhập khẩu đồ đạc:

python manage.py loaddata fixture.json 
Các vấn đề liên quan