Я застрял, пытаясь понять, как сделать следующее:
У меня есть несколько сущностей:
PurchaseItem (товар в корзине пользователя), Order (заказ - объединяет одинили много BuyItems), OrderStatusHistory (это элементы статуса для Заказа - вместо изменения я создаю новые, чтобы иметь возможность ретроспективно просматривать, как статус изменялся с течением времени).быть создан через администратора - все они создаются через открытый интерфейс, но я должен показать ордер и его атрибуты в админ-панели:
Мне нужно иметь возможность показывать список ордеров.Это просто.
Когда я нажимаю на заказ или что-то еще, я хочу иметь возможность просмотреть детали заказа: список предметов Покупки.
Мне нужно иметь возможность изменить статуспорядок - выбор из выпадающего списка или что-то - однако это действие запускает создание нового элемента statusHistory.
Это все возможно с интерфейсом администратора, или я должен забыть об этом и создать свою собственную реализацию со страницами ивсе?
Мои модели выглядят так:
class Order(models.Model):
dateCreated = models.DateTimeField(null=False,default=datetime.now())
items = models.ManyToManyField(PurchaseItem)
user_name = models.CharField(null=True,blank=True,max_length=200)
phone = models.CharField(null=False,blank=False,max_length=11,validators=[validate_phone])
phone_ext = models.CharField(null=True,blank=True,max_length=5,validators=[validate_phone_ext])
email = models.CharField(null=False,blank=False,max_length=100,validators=[validators.EmailValidator])
addressCity = models.CharField(null=False,blank=False,max_length=100)
addressStreet = models.CharField(null=False,blank=False,max_length=200)
notes = models.TextField(null=True,blank=True)
accessKey = models.CharField(max_length=32,default=CreateAccessKey())
class PurchaseItem(models.Model):
picture = models.ForeignKey(Picture, null=False)
paperType = models.CharField(null=False,max_length=200)
printSize = models.CharField(null=False,max_length=200)
quantity = models.IntegerField(default=1, validators=[validators.MinValueValidator(1)])
price = models.DecimalField(decimal_places=2,max_digits=8)
dateCreated = models.DateTimeField(null=False)
cost = models.DecimalField(decimal_places=2,max_digits=8)
class OrderStatusHistory(models.Model):
orderId = models.ForeignKey(Order)
dateSet = models.DateTimeField(null=False,default=datetime.now())
status = models.IntegerField(choices=OrderStatus,default=0,null=False,blank=False)
comment = models.TextField(null=True,blank=True)
Следующая встроенная настройка не работает, потому что у Order нет FK для PurchaseItems:
class OrderStatusHistoryAdmin(admin.StackedInline):
model = OrderStatusHistory
class PurchaseItemAdmin(admin.StackedInline):
model = PurchaseItem
class OrderAdmin(admin.ModelAdmin):
model = Order
inlines = [OrderStatusHistoryAdmin,PurchaseItemAdmin]
admin.site.register(Order,OrderAdmin)