from django.db import models
from django.urls import reverse
from decimal import Decimal
class Category(models.Model):
name = models.CharField(max_length=200,db_index=True)
slug = models.SlugField(max_length=200,db_index=True,unique=True)
class Meta:
ordering = ('name',)
verbose_name = "Category"
verbose_name_plural = "Categorys"
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('product_list_category',args=[self.slug])
class Product(models.Model):
category=models.ForeignKey(Category,related_name='product')
product_name = models.CharField(max_length=200, db_index=True)
slug = models.SlugField(max_length=200,db_index=True)
product_details = models.TextField()
price = models.IntegerField()
active = models.IntegerField(default='1')
stock = models.PositiveIntegerField()
created = models.DateTimeField(auto_now_add=True)
class Meta:
ordering = ('-created',)
index_together = (('id','slug'),)
verbose_name = "Product"
verbose_name_plural = "Products"
def __str__(self):
return self.product_name
def get_absolute_url(self):
return reverse('product_detail',args=[self.id,self.slug])
class Order (models.Model):
name = models.CharField(max_length=200)
product = models.ManyToManyField(Product, related_name='items')
phone = models.CharField(max_length=20)
address = models.TextField()
payment_option = models.CharField(max_length=50)
order_status = models.CharField(max_length=50)
quantity = models.PositiveIntegerField(default=1)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
price = models.DecimalField(max_digits=10,decimal_places=2)
class Meta:
ordering = ('name',)
def __str__(self):
return self.name
def get_cost(self):
return self.price * self.quantity
form
كلاس order يكون لها اثنين from . حيث جزاء من بيانات هذا الكلاس سيتم إدخالها من صفحة والجزاء الآخر من صفحه أخرى
الفورم الأول يدخل بيانات المشتري ونوع الشراء
class OrderForm(ModelForm):
OPTIONS = (
)
OPTIONS2 = (
)
order_status = forms.TypedChoiceField(required=False, choices=OPTIONS2,
widget=forms.RadioSelect)
payment_option = forms.ChoiceField(choices=OPTIONS)
class Meta:
model = Order
fields = ['name','phone','address','payment_option','order_status']
الفورم الثاني يدخل رقم product والكمية . في صفحة أخرى مستقله تعرض كل ال product.
class CartAddProductForm(forms.Form):
# TODO: Define form fields here
quantity =
forms.TypedChoiceField(choices=PRODUCT_QUANTITY_CHOICES,coerce=int)
update = forms.BooleanField(required=False,initial=False,widget=forms.HiddenInput)
المشكلة وارجو المساعدة .
كيف سيكون كود الview . الذي يقوم باستقبال بيانات ٢فورم من صفحات مختلفة . وإضافة إلى database