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

This commit is contained in:
Ivan Hörler 2018-02-01 21:28:17 +01:00
parent 43b362d466
commit c6b1bb975b
5 changed files with 33 additions and 27 deletions

View File

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

View File

@ -3,7 +3,7 @@ from django.core.validators import MinValueValidator
from django.db import models
from django.contrib.auth.models import User
from django.utils import timezone
from currencies.models import ExchangeRate
class Option(models.Model):
name = models.CharField(max_length=200, unique=True)
@ -56,12 +56,23 @@ class OrderStatus(models.Model):
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):
""" articles of purchase """
article = models.ForeignKey(Article)
amount = models.FloatField(max_length=5)
amount = models.FloatField(max_length=3)
delivery_date = models.DateField()
order = models.ForeignKey(Order)
order_date = models.DateTimeField(auto_now_add=True)
order_status = models.ForeignKey(OrderStatus)
exchange_rate = models.ForeignKey(ExchangeRate)
class Meta:
verbose_name_plural = "Order of Goods"
@ -76,32 +87,22 @@ class Picture(models.Model):
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):
""" cart of user """
name = models.CharField(max_length=200)
user = models.ForeignKey(User, on_delete=models.CASCADE)
article = models.ManyToManyField(Article)
def __str__(self):
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):
name = models.CharField(max_length=200)
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.forms import UserCreationForm
from webshop.models import (Article, Category, ArticleStatus, Person,
City, Picture)
City, Picture, CartOfGoods)
from webshop.forms import RegistrationForm, AddToCartForm
from currencies.models import ExchangeRate, ExchangeRate_name
@ -144,7 +144,12 @@ def article_details(request, article_id):
if amount.is_valid():
print("is valid")
amount = amount.cleaned_data['amount']
print("amount:", amount, "article_id:", article_id)
cart = CartOfGoods.objects.create(
article=article_id,
amount=amount,
cart="",
)
cart.save()
amount = AddToCartForm()
else:
amount = AddToCartForm()

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 95 KiB