Я, наконец, добавил варианты к своим элементам заказа, поэтому теперь я добавляю элементы с разными размерами S, M и L
Когда я добавляю варианты в админку для отображения, они возвращаются с
ERRORS:
<class 'core.admin.OrderItemAdmin'>: (admin.E109) The value of 'list_display[3]' must not be a ManyToManyField.
Итак, как показать, что я показываю изменение размера в админке:
вот модели:
class VariationManager(models.Manager):
def all(self):
return super(VariationManager, self).filter(active=True)
def sizes(self):
return self.all().filter(category='size')
def colors(self):
return self.all().filter(category='color')
VAR_CATEGORIES = (
('size', 'size',),
('color', 'color',),
('package', 'package'),
)
class Variation(models.Model):
item = models.ForeignKey(Item, on_delete=models.CASCADE)
category = models.CharField(
max_length=120, choices=VAR_CATEGORIES, default='size')
title = models.CharField(max_length=120)
image = models.ImageField(null=True, blank=True)
price = models.FloatField(null=True, blank=True)
objects = VariationManager()
updated = models.DateTimeField(auto_now_add=False, auto_now=True)
active = models.BooleanField(default=True)
def __str__(self):
return self.title
class OrderItem(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,
on_delete=models.CASCADE)
ordered = models.BooleanField(default=False)
item = models.ForeignKey(Item, on_delete=models.CASCADE)
quantity = models.IntegerField(default=1)
variation = models.ManyToManyField(Variation)
def __str__(self):
return f"{self.quantity} of {self.item.title}"
и вот admin.py
class OrderAdmin(admin.ModelAdmin):
list_display = ['user', 'ordered', 'ordered_date', 'coupon', 'payment', 'shipping_address', 'billing_address', 'out_for_delivery',
'received', 'refund_requested', 'refund_granted', 'ref_code']
list_display_links = [
'user',
'shipping_address',
'billing_address',
'payment',
'coupon'
]
class OrderItemAdmin(admin.ModelAdmin):
list_display = ['item', 'quantity', 'ordered', ]