- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有一个 django 电子商务项目,在我决定改进它之前运行良好。我让用户在某些服务上下订单,但每次他们下订单时,他们必须始终输入他们的详细信息(姓名、emil、地址等),所以我决定升级应用程序,以便用户可以添加他们的账单地址,并且可以引用按照顺序或作为客人继续。
型号
class Order(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
email = models.EmailField()
address = models.CharField(max_length=250)
postal_code = models.CharField(max_length=20)
city = models.CharField(max_length=100)
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
paid = models.BooleanField(default=False)
class OrderItem(models.Model):
order = models.ForeignKey(Order, related_name='items')
product = models.ForeignKey(Product,related_name='order_items')
price = models.DecimalField(max_digits=10, decimal_places=2)
quantity = models.PositiveIntegerField(default=1)
查看
def order_create(request):
cart = Cart(request)
if request.method == 'POST':
form = OrderCreateForm(request.POST)
if form.is_valid():
order = form.save()
for item in cart:
OrderItem.objects.create(order=order, product=item['product'],price=item['price'], quantity=item['quantity'])
cart.clear()
return render(request,'order/created.html', {'order': order})
else:
form = OrderCreateForm()
return render(request, 'order/create.html',{'cart': cart, 'form': form})
然后我创建了一个帐户应用程序并扩展了 django 用户,这样用户就可以注册地址和手机,这样用户就不必在每次下订单时都输入它。
我的新模型是
class Order(models.Model):
account = models.ForeignKey(Account, related_name='user_account')
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
paid = models.BooleanField(default=False)
coupon = models.ForeignKey(Coupon, related_name='orders',null=True,blank=True)
discount = models.IntegerField(default=0,validators=[MinValueValidator(0), MaxValueValidator(100)])
我对如何为我的 View 编码感到困惑。任何帮助都会有所帮助,我也有
def admin_order_detail(request, order_id):
order = get_object_or_404(Order, id=order_id)
#account = Account.objects.filter(request.user)
context = {
'order': order,
}
template = 'order/detail.html'
return render(request,template,context)
能够在管理区域查看订单详细信息,但我只能扩展全名、电子邮件和电话号码。任何帮助,将不胜感激。提前致谢
github上所有代码的副本 https://github.com/Olar19/ecommerce
最佳答案
这是利用内置用户对象的好主意。 Django 非常“内含电池”,这意味着它比 Flask 和我认为用户身份验证系统的很大一部分更开箱即用。
通常,您会使用一对一字段扩展用户对象,该字段在您的上下文中类似于帐户对象。
more detail on one-to-one fields (from the docs)
如果您是 B2B 而非 B2C,那么您可能希望 Account 对象包含公司名称,然后将员工分配到该帐户,其中 Employee 对象将是 User 的扩展。
所以假设 Account 对象看起来像这样:
class Account(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
bio = models.TextField(max_length=500, blank=True)
...
然后您可以从订单对象访问帐户和用户对象。
order = get_object_or_404(Order, id=order_id)
username = order.user_account.username
或权限类型的东西
orders = Order.objects.filter(user_account__user = request.user)
关于python - 电子商务应用程序中的 Django 用户模型扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46993980/
我正在为客户建立一个 EC 网站,项目经理提出了一些奇怪的想法,我正在努力实际实现他向客户销售的产品。 这是我的主要问题和系统设置的快速总结:产品在类别内,类别可能是另一个类别的子类别。因此,该类别在
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
最近一直在想响应式网站与移动网站,尤其是电子商务网站。我有一个相当大的项目即将开始,看起来它将是一个相对繁重的项目(就模板和功能而言)。因此,立即想到的是做一个移动站点来削减某些可能对性能要求很高但不
我正在为大学考试编写一些 Java 代码,该项目基于“电子商务”。要求之一是将产品插入购物车,我必须使用 Visitor 模式。 这是教授给我的一个例子,我必须“用”它来代表我的购物车。问题是我有一个
我正在尝试确定在数据库中存储订单的最佳方式。 每个产品都可以配置,但并非所有选项都相同。例如: Product A Size: small, medium, large Membership: 1 y
我整天都在苦思冥想,试图找到这个问题的答案;我终其一生都无法弄清楚如何在我为客户建立的 Woocommerce 商店中右对齐价格。这是我所在的位置: .price .woocommerce-Price
我需要有关棘手问题的专家建议。 场景是: 电子商务网站 很多产品 这些产品有很多折扣 产品由唯一的 ProductID 标识并具有销售价格。很经典的剧情。该产品还可以有一个或多个折扣。 折扣可以有不同
我想在用户第一次购买之前将结帐的账单字段的值预填充到数据库存储的值中。 我试过下面的代码: add_filter( 'woocommerce_checkout_fields' , function (
我想了解数据库的可扩展性,所以我刚刚听过一个关于高度可扩展的 Web 应用程序的习惯的演讲 http://techportal.inviqa.com/2010/03/02/habits-of-high
在我的电子商务应用程序(用于咖啡馆/餐馆)中,我目前具有以下数据库结构。 cart 就是购物车,可以在其中添加商品,商品/订单发送到服务器之前的一个临时场所。 ProductCart 是一个行项目,许
我在我的项目中实现了 Google Analytics。在他们要求我启用电子商务之前,一切似乎都很好。 按照所有设置步骤,我已在 GA 仪表板上为我的项目启用电子商务,并且 Unity 中的设置必须正
我想使用 GTM 来跟踪电子商务交易。这是针对客户端环境的测试,其中代码可能位于 GTM 代码片段 之后的 ,这就是为什么使用 Dom Ready 作为事务标签的触发器不可靠的原因。 这是我的测试代码
我需要覆盖我的 spree 商店的标题颜色。我在 ../mystore/vendor/assets/stylesheets/spree/frontend 目录下创建了一个 custom.css。但它不
我正在使用 Odoo 10。在新用户注册后(通过 localhost:8069/web/signup)我希望他自动分配到我在我自己的自定义模块上创建的组中(用户将需要身份验证稍后来自管理员,以便他可以
我希望构建一个用户能够从我的站点购买产品的应用程序。购买将包括他们购买的实物、运输、税收(如果适用)等。我知道 PayPal 有许多付款选项,其中一个是 Web 服务,另一个只是重定向到他们的网站。我
我正在开发一个电子商务网站。我正在尝试使用 ajax 请求设置购物车商品数量。 我明白了 if (isset($_POST['product_id']) && isset($_POST['new_qu
假设用户访问我的网站并购买了一个棚子。棚子将被添加到购物车并完成工作。在我的数据库中,我已经有了棚子的尺寸(以显示给客户)。 假设客户还想要棚子的地毯(你永远不知道)我希望我的网络应用程序自动理解地毯
我正在尝试设置一个 AJAX 函数来清空我的购物车 HTML Go to Product JavaScript function clearCart(d) { jQuery(document)
我正在尝试在我的应用程序中设置 Spree(我愿意使用 Gem 或在供应商模式下运行它)。 我已经查看了文档和 wiki,但对于它如何在我现有的应用程序中工作,我仍然有些困惑。我可以为 Spree 使
目前正在使用 GTag 将购买数据记录到 Google Analytics E-Commerce。我正在使用标准电子商务。现在我要把这个过程作为后期处理。 (即)需要使用 C# 应用程序将购买数据记录
我是一名优秀的程序员,十分优秀!