Новый пользователь Django, SQL: Как ссылаться на объекты базы данных в коде в Django?

Я знаю, что в Интернете есть масса ресурсов, чтобы разобраться в этом, но я чувствую, что ситуация с моими моделями очень странная, и я знаю, что синтаксис может стать очень запутанным, поэтому я просто не уверен, что делать.

Итак, я создаю программное обеспечение для компании по производству мороженого, чтобы отслеживать их запасы. Мои модели выглядят следующим образом:

class sizeCounts (models.Model):
    class Meta:
        verbose_name = "Size Count"
        verbose_name_plural = "Size Counts"

    #Just to label a collection of sizes with the corresponding flavor so it's not confusing!
    item_Flavor_Choices = [('CHOCOLATE','chocolate'),('VANILLA', 'vanilla'),('COOKIESNCREME', 'cookiesncreme'), ('STRAWBERRY', 'strawberry')]
    item_Flavor = models.CharField(max_length=100, choices = item_Flavor_Choices, default='chocolate')
    
    half_Pint_Count = models.IntegerField(default=30)
    one_Quart_Count = models.IntegerField(default=30)
    pint_Count = models.IntegerField(default=30)
    half_Gallon_Count = models.IntegerField(default=30)
    gallon_Count = models.IntegerField(default=30)

    def __str__(self):
        return 'Half Pint: %s, Quart: %s, Pint: %s, Half Gallon: %s, Gallon: %s' % (self.half_Pint_Count, self.one_Quart_Count, 
        self.pint_Count, self.half_Gallon_Count, self.gallon_Count)


class item (models.Model):
    class Meta:
        verbose_name = "Item"
        verbose_name_plural = "Items"

    item_Flavor_Choices = [('CHOCOLATE','chocolate'),('VANILLA', 'vanilla'),('COOKIESNCREME', 'cookiesncreme'), ('STRAWBERRY', 'strawberry')]
    item_Flavor = models.CharField(max_length=100, choices = item_Flavor_Choices)
    size_Counts = models.ForeignKey(sizeCounts, on_delete=models.CASCADE, default = None)
    
    def __str__(self):
        return self.item_Flavor

Как вы видите, у меня есть модель товара и модель sizeCounts. Товар имеет вкус и заданное количество для каждого размера (поэтому внешний ключ к sizeCounts). Допустим, у меня есть товар со вкусом шоколада. Как я могу сослаться на sizeCounts этого объекта? То есть, как я смогу взять определенный объект элемента только на основе одного из его атрибутов, а затем сослаться на другие атрибуты этого объекта? Я хотел бы использовать эту информацию для размещения инвентаря на переднем плане.

Любая помощь будет принята с благодарностью. Спасибо!

Это очень просто, используйте django queryset API для получения нужного вам объекта.

# Note that 'objects' is a manager and is used to make queries for a model.
item_1 = item.objects.get(item_Flavor="Chocolate")

# Then use the dot notation to access the object's fields, such as the 'attached' sizeCounts object in the size_Counts field.
item_1.size_Counts

# If you want to 'use/access' the fields/columns of the sizeCounts object, then do this:
item_1.size_Counts.half_Pint_Count # This will get you the value at this field.

Подробнее о Django Queryset API и менеджерах объектов читайте здесь:

  1. https://docs.djangoproject.com/en/3.2/ref/models/querysets/
  2. https://docs.djangoproject.com/en/3.2/topics/db/queries/
  3. .
  4. https://docs.djangoproject.com/en/3.2/topics/db/managers/
  5. .

Наконец, подумайте о переименовании ваших моделей, чтобы сделать их более идентифицируемыми как модели: SizeCount Item

Вернуться на верх