python - /customer/2/ 'ReverseManyToOneDescriptor' 对象的 Django AttributeError 没有属性 'all'
问题描述
您好我正在尝试解决我试图在我的客户模板中过滤的错误问题。在我看来,如果我放置entry_objects= Entry.objects.all()
. 很好,但我希望能够按客户过滤。我的查询集有效,但我不能从下到上进行反向操作。:(
模型.py:
class customer(models.Model):
name = models.CharField(max_length= 200, null = True)
phone = models.CharField(max_length= 200, null = True)
email = models.CharField(max_length= 200, null = True)
date_created = models.DateTimeField(auto_now_add=True, null= True)
def __str__(self):
return self.name
class UserTopic(models.Model):
#category for user to chose
#User interest
text = models.CharField(max_length=120, null =True) #we want to display characters with max 250
date_added = models.DateTimeField(auto_now_add=True, null=True ) #allows realtime accuracy upon upload
#string representation of model
def __str__(self):
return self.text
class Tag(models.Model):
tag_name = models.CharField(max_length=15, null=True)
def __str__(self):
return self.tag_name
#entry model
class Entry(models.Model):
cust_name = models.ForeignKey(customer, null= True, on_delete=models.SET_NULL)
tags = models.ForeignKey(Tag, null = True, on_delete=models.CASCADE)
topic = models.ForeignKey(UserTopic, null = True, on_delete=models.CASCADE)
text = models.TextField()
date_added = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.text[:10]+"..."
# ...
on_delete=models.DO_NOTHING,
视图.py:
def customer_page(request, pk_test):
customer_objects = customer.objects.get(id=pk_test),
entry_objects = customer.entry_set.all()
#entry = Entry.objects.all()
context = {
'entry_objects': entry_objects,
'customer_objects': customer_objects,
}
return render(request, 'user_log/customer.html', context)
解决方案
在外键上放置一个related_name
字段,以便其他模型可以使用realated_name
字段引用此模型。
class Entry(models.Model):
cust_name = models.ForeignKey(customer, null= True, on_delete=models.SET_NULL, related_name="entries")
使用您的客户对象(使用 pk 检索)访问他的所有条目
customer_objects = customer.objects.get(id=pk_test),
entry_objects = customer_objects.entries.all()
注意:我相信customer_objects
使用pk
. customer_object
不使用单一名称customer_objects
。
推荐阅读
- android - Android Drive API getWebViewLink 返回 null
- maven-assembly-plugin - 在 Gradle 中使用 Maven 插件
- android - 视图在全屏协调器布局中被推出屏幕,即隐藏导航按钮
- haskell-stack - 堆栈上传只是挂起
- vue.js - Vue js路由单个URL
- sum - Teradata SQL:如何使用 SUM 函数根据情况 A 或 B 将总计分为两组?
- php - 仅在 PHP 中获取两个日期之间的时间?
- c++14 - 被调用的函数实例必须依赖于参数
- uitableview - UITableView 的单元格中只显示一种类型的信息
- javascript - android:React Native 从另一个应用程序打开一个应用程序?