class BillList(models.Model):
username = models.ForeignKey(User)
billno = models.CharField(max_length=15)
class OrderDetails(models.Model):
billno = models.ForeignKey(BillList)
orderdetails = models.TextField()
User
是django.contrib.auth.models
中的一个。
我需要检索特定用户的所有billno
。我如何在Appengine上的Django-nonrel中进行这个简单的查询?
如果我这样做:
iq = User.objects.filter(username = "name1")
BillList.objects.filter(username = iq)
然后我收到错误:DatabaseError: Subqueries are not supported.
如果我立即尝试BillList.objects.filter(username = "restaurant1")
,那么ValueError: invalid literal for long() with base 10: 'restaurant1'
我确信必须可以进行这个简单的查询!任何解决方法?
答案 0 :(得分:2)
其他人都是对的。但是,您对ForeignKey
的理解可能存在根本问题。例如:
username = models.ForeignKey(User)
根本不是“用户名”。它是一个用户对象。更容易理解的是:
user = models.ForeignKey(User)
User
对象具有username
属性。因此,要获得一个人的用户名,您可以使用“
BillList.objects.get(billno = 12345).user.username
然后,您的查询变为:
iq = User.objects.get(username = "name1")
my_list = BillList.objects.all().filter(user = iq)
或者,更直接地说:
my_list = iq.billist_set.all()