Revert "broken models relationship in admin. please look at the erd.png"

This reverts commit c6b1bb975b.
This commit is contained in:
Ivan Hörler 2018-02-02 08:44:02 +01:00
parent c6b1bb975b
commit 08a1a99ac4
5 changed files with 27 additions and 33 deletions

View File

@ -3,7 +3,7 @@ from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from django.contrib.auth.models import User from django.contrib.auth.models import User
# Register your models here. # Register your models here.
from webshop.models import (Article, Order, CartOfGoods, from webshop.models import (Article, Order, OrderPosition,
Person, City, Picture, OrderOfGoods, Person, City, Picture, OrderOfGoods,
Category, Option) Category, Option)
@ -57,10 +57,10 @@ class ArticleAdmin(admin.ModelAdmin):
inlines = (PictureInline,) inlines = (PictureInline,)
class CartOfGoodsInline(admin.StackedInline): class OrderPositionInline(admin.StackedInline):
model = CartOfGoods model = OrderPosition
can_delete = False can_delete = False
verbose_name_plural = 'Cart Items' verbose_name_plural = 'Order Positions'
class OrderAdmin(admin.ModelAdmin): class OrderAdmin(admin.ModelAdmin):
@ -68,7 +68,7 @@ class OrderAdmin(admin.ModelAdmin):
list_filter = ('date',) list_filter = ('date',)
date_hierarchy = 'date' date_hierarchy = 'date'
ordering = ('-date',) ordering = ('-date',)
inlines = (CartOfGoodsInline,) inlines = (OrderPositionInline,)
class OrderOfGoodsAdmin(admin.ModelAdmin): class OrderOfGoodsAdmin(admin.ModelAdmin):

View File

@ -3,7 +3,7 @@ from django.core.validators import MinValueValidator
from django.db import models from django.db import models
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.utils import timezone from django.utils import timezone
from currencies.models import ExchangeRate
class Option(models.Model): class Option(models.Model):
name = models.CharField(max_length=200, unique=True) name = models.CharField(max_length=200, unique=True)
@ -56,23 +56,12 @@ class OrderStatus(models.Model):
return self.name return self.name
class Order(models.Model):
""" purchase """
user = models.ForeignKey(User, on_delete=models.CASCADE)
article = models.ManyToManyField(Article, through='OrderPosition')
status = models.ForeignKey(OrderStatus)
date = models.DateTimeField(default=timezone.now)
class OrderOfGoods(models.Model): class OrderOfGoods(models.Model):
""" articles of purchase """
article = models.ForeignKey(Article) article = models.ForeignKey(Article)
amount = models.FloatField(max_length=3) amount = models.FloatField(max_length=5)
delivery_date = models.DateField() delivery_date = models.DateField()
order = models.ForeignKey(Order)
order_date = models.DateTimeField(auto_now_add=True) order_date = models.DateTimeField(auto_now_add=True)
order_status = models.ForeignKey(OrderStatus) order_status = models.ForeignKey(OrderStatus)
exchange_rate = models.ForeignKey(ExchangeRate)
class Meta: class Meta:
verbose_name_plural = "Order of Goods" verbose_name_plural = "Order of Goods"
@ -87,22 +76,32 @@ class Picture(models.Model):
return self.name return self.name
class Order(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
article = models.ManyToManyField(Article, through='OrderPosition')
status = models.ForeignKey(OrderStatus)
date = models.DateTimeField(default=timezone.now)
class OrderPosition(models.Model):
article = models.ForeignKey(Article, on_delete=models.CASCADE)
order = models.ForeignKey(Order, on_delete=models.CASCADE)
amount = models.FloatField(max_length=5)
price_in_chf = models.DecimalField(max_digits=19,
decimal_places=2,
validators=[MinValueValidator(
Decimal('0.00'))])
class ShoppingCart(models.Model): class ShoppingCart(models.Model):
""" cart of user """
name = models.CharField(max_length=200) name = models.CharField(max_length=200)
user = models.ForeignKey(User, on_delete=models.CASCADE) user = models.ForeignKey(User, on_delete=models.CASCADE)
article = models.ManyToManyField(Article)
def __str__(self): def __str__(self):
return self.name return self.name
class CartOfGoods(models.Model):
""" cart items """
article = models.ForeignKey(Article, on_delete=models.CASCADE)
amount = models.FloatField(max_length=5)
cart = models.ForeignKey(ShoppingCart)
class City(models.Model): class City(models.Model):
name = models.CharField(max_length=200) name = models.CharField(max_length=200)
zip_code = models.PositiveSmallIntegerField() zip_code = models.PositiveSmallIntegerField()

View File

@ -4,7 +4,7 @@ from django.contrib.auth.decorators import login_required
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm from django.contrib.auth.forms import UserCreationForm
from webshop.models import (Article, Category, ArticleStatus, Person, from webshop.models import (Article, Category, ArticleStatus, Person,
City, Picture, CartOfGoods) City, Picture)
from webshop.forms import RegistrationForm, AddToCartForm from webshop.forms import RegistrationForm, AddToCartForm
from currencies.models import ExchangeRate, ExchangeRate_name from currencies.models import ExchangeRate, ExchangeRate_name
@ -144,12 +144,7 @@ def article_details(request, article_id):
if amount.is_valid(): if amount.is_valid():
print("is valid") print("is valid")
amount = amount.cleaned_data['amount'] amount = amount.cleaned_data['amount']
cart = CartOfGoods.objects.create( print("amount:", amount, "article_id:", article_id)
article=article_id,
amount=amount,
cart="",
)
cart.save()
amount = AddToCartForm() amount = AddToCartForm()
else: else:
amount = AddToCartForm() amount = AddToCartForm()

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 95 KiB