Представьте смесь с моделью Джанго - PullRequest
0 голосов
/ 23 ноября 2011

Я пытаюсь изобразить смесь в Джанго. Что-то вроде:

Chemical #1 - 50%
Chemical #2 - 30%
Chemical #3 - 20%

Я подумал, что я бы использовал оболочку под названием состав следующим образом:

class Composition(models.Model):
    """ Just a Wrapper """
    def save(...):
        #Validate ingredients add up to 100% and such


class Ingredient(models.Model):
    composition = models.ForeignKey('Composition',related_name='ingredients')
    name = models.CharField(max_length = 10)
    percentage = models.IntegerField()

Я почти уверен, что есть лучший способ сделать это. Имейте в виду, что я делаю это так, чтобы позже я мог использовать встроенные функции в админке Django. Что вы, ребята, рекомендуете? Большое спасибо =)

1 Ответ

3 голосов
/ 23 ноября 2011

Мне кажется, что было бы предпочтительнее сохранить список ингредиентов, а затем ссылаться на них при создании своих композиций, а не вводить названия ингредиентов каждый раз. Вы можете сделать это, используя отношение «многие ко многим» и сквозную таблицу, например:

class Ingredient(models.Model):
    name = models.CharField(max_length=10)

class Composition(models.Model):
    name = models.CharField(max_length=255)
    ingredients = models.ManyToManyField(Ingredient, through='CompositionIngredient')

    def save(...):
        #Validate ingredients add up to 100% and such

class CompositionIngredient(models.Model):
    composition = models.ForeignKey(Composition)
    ingredient = models.ForeignKey(Ingredient)
    proportion = models.DecimalField()

См. Django документы для получения дополнительной информации.

РЕДАКТИРОВАТЬ: Вот документация о том, как работать с таблицами в интерфейсе администратора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...