Я создал базу данных продуктов, которая разделена на 3 части. И каждая часть имеет «под» часть, содержащую метки. Но чем больше я с ним работаю, тем более нестабильным он себя чувствует. И каждое добавление, которое я делаю, требует все больше и больше кода, чтобы заставить его работать.
Продукт состоит из частей, и каждая часть имеет тип. Каждый продукт, часть и тип имеет этикетку. И есть ярлык для каждого языка.
Изделие содержит детали в 2 списке. Один список для частей по умолчанию (по одному для каждого типа) и одна из дополнительных частей.
Теперь я хочу добавить валюту в смесь и пришел к решению перемоделировать весь способ, которым я справляюсь.
Результат, который я хочу получить, - это список всех объектов продукта, который содержит имя, описание, цену, все части и все типы, которые соответствуют частям. И для этих правильных языковых меток.
Вот так:
product
- name
- description (by language)
- price (by currency)
- parts
- part (type name and part name by language)
- partPrice (by currency)
Проблема с моей текущей настройкой, которая представляет собой дикое сочетание db.ReferenceProperty и db.ListProperty (db.key)
И получение всех данных - это немного хлопот, которые требуют нескольких циклов for, соответствующих вызовам dict и datastore. Ну, это немного беспорядок.
Повторная модель (не проверенная) выглядит следующим образом
class Products(db.model)
name = db.StringProperty()
imageUrl = db.StringProperty()
optionalParts = db.ListProperty(db.Key)
defaultParts = db.ListProperty(db.Key)
active = db.BooleanProperty(default=True)
@property
def itemId(self):
return self.key().id()
class ProductPartTypes(db.Model):
name= db.StringProperty()
@property
def itemId(self):
return self.key().id()
class ProductParts(db.Model):
name = db.StringProperty()
type = db.ReferenceProperty(ProductPartTypes)
imageUrl = db.StringProperty()
parts = db.ListProperty(db.Key)
@property
def itemId(self):
return self.key().id()
class Labels(db.Model)
key = db.StringProperty() #want to store a key here
language = db.StringProperty()
label = db.StringProperty()
class Price(db.Model)
key = db.StringProperty() #want to store a key here
language = db.StringProperty()
price = db.IntegerProperty()
Главное, что я разделил Ярлыки и Прайс. Таким образом, они могут содержать этикетки и цены на любые продукты, запчасти или типы.
Так что мне интересно, это твердое решение с архитектурной точки зрения? Будет ли это сохраняться, даже если в каждой модели тысячи записей?
Также приветствуются любые советы по правильному извлечению данных. Мое текущее решение - сначала получить все данные и зациклить их и вставить их в диктанты, но мне кажется, что они могут потерпеть неудачу в любую минуту.
.. Фредрик