Автоматическое порядковое число в django queryset ? Как отсортировать эту штуку в Django?
У меня проблема с сортировкой такой вещи, как "Порядковое число".
Например, у меня есть родительская модель (Order) и дочерняя (Item). Я не знаю, как сделать поле Items ID, начинающееся от 1 до N, где N - количество товаров в данном конкретном заказе. Мне трудно объяснить, поэтому я поместил несколько изображений с вещами, которые я хочу сделать, и попытался объяснить это на примере.
И вот мои models.py:
class Order(models.Model):
PENDING = 0
DURING = 1
DONE = 2
STATUS = (
(PENDING, 'Oczekuję'),
(DURING, 'W trakcie'),
(DONE, 'Zakończone'),
)
user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='order_user')
date_created = models.DateTimeField(auto_now_add=True, null=True)
slug = RandomSlugField(length=7, exclude_lower=True, exclude_upper=True, exclude_vowels=True)
status = models.SmallIntegerField(choices=STATUS, default=PENDING)
class Meta:
verbose_name = "zamówienie"
verbose_name_plural = "zamówienia"
def __str__(self):
return "Zamówienie ID#{} z dnia {}".format(self.slug, self.date_created.strftime('%d/%m/%y'))
def get_absolute_url(self):
return reverse('detail', kwargs={'slug': self.slug})
class Item(models.Model):
order = models.ForeignKey(Order, null=True, on_delete=models.SET_NULL)
lenght = models.DecimalField(max_digits=4, decimal_places=0)
width = models.DecimalField(max_digits=4, decimal_places=0)
lenght = models.PositiveSmallIntegerField(blank=False)
quantity = models.SmallIntegerField(default=1, blank=False, null=False)
description = models.CharField(max_length=255, blank=True, null=True)
lenght1 = models.BooleanField(default=False)
lenght2 = models.BooleanField(default=False)
width1 = models.BooleanField(default=False)
width2 = models.BooleanField(default=False)
class Meta:
verbose_name = "formatka"
verbose_name_plural = "formatki"
def __str__(self):
return "{} x {}".format(self.width, self.lenght)
#Make items ID count from 1 for each Order
for index, i in enumerate(item):
i.id = index + 1
i.save()
<