首页 > 解决方案 > 用户在 django 中拥有数据

问题描述

我希望用户拥有他们的数据,但这是我不断收到的错误“无法将关键字“商家”解析到字段中。选择有:date_added、id、order、order_id、product、product_id、quantity”

模型.py

class Merchant(models.Model):
    user=models.OneToOneField(User,on_delete=models.CASCADE, primary_key=True)

class Product(models.Model):
   merchant=models.ForeignKey(Merchant, on_delete=models.CASCADE)

class OrderItem(models.Model):
    product=models.ForeignKey(Product, on_delete=models.SET_NULL, null=True)

视图.py

def users_homepage(request):
    itemsordered=OrderItem.objects.filter(merchant=request.user.merchant).order_by('date_added')

预先感谢。

标签: pythonpython-3.xdjangodjango-modelsdjango-views

解决方案


AnOrderItem没有merchant字段,因此您不能对此进行过滤,或者至少不能直接过滤。您可以通过两个连续的下划线 ( ) 来“查看”关系__

def users_homepage(request):
    itemsordered=OrderItem.objects.filter(
        product__merchant__user=request.user
    ).order_by('date_added')
    # …

注意:通常使用settings.AUTH_USER_MODEL[Django-doc]引用用户模型比直接使用User模型 [Django-doc]更好。有关更多信息,您可以查看文档的引用User模型部分


推荐阅读