Новый пользователь 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 и менеджерах объектов читайте здесь:
- https://docs.djangoproject.com/en/3.2/ref/models/querysets/
- https://docs.djangoproject.com/en/3.2/topics/db/queries/ .
- https://docs.djangoproject.com/en/3.2/topics/db/managers/ .
Наконец, подумайте о переименовании ваших моделей, чтобы сделать их более идентифицируемыми как модели: SizeCount Item