关于Appengine的Django-nonrel

时间:2014-07-20 12:25:04

标签: django google-app-engine django-nonrel

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()

Userdjango.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'

我确信必须可以进行这个简单的查询!任何解决方法?

1 个答案:

答案 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()