我有以下models.py:
//models.py(code snippet)
class userresp(models.Model):
uid=models.ForeignKey(settings.AUTH_USER_MODEL,blank=True,null=True)
resp=models.CharField(max_length=20)
datetime=models.DateTimeField(default=timezone.now)
def __unicode__(self):
return u"{} {}".format(self.uid,self.datetime)
class Meta:
db_table="userresp"
我想检索与特定uid = 3的值有关的所有“resp”。 表userstp中有两条记录,其中uid = 3。怎么做?
答案 0 :(得分:3)
首先,uid
对于该领域来说不是一个好名字。 STH。像user
更合适,因为userresp
(类名应该是驼峰,btw)实例resp
,resp.uid
会给你一个User
实例,而非其ID。你可以通过resp.uid_id
获取id(这使得错误显而易见)。
无论如何,
resps = userresp.objects.filter(uid_id=3)
会奏效。如果你有User
个实例,请使用fk字段的related_name
,例如:
user = get_user_model().objects.get(id=3)
resps = user.userresp_set.all()
答案 1 :(得分:1)
resps = userresp.objects.filter(uid_id=3)
应该有效。
但是您的代码存在一些问题。首先,类名应该是大写 CamelCase。
试试这个:
from django.contrib.auth.models import User
class UserResp(models.Model):
user=models.ForeignKey(User, blank=True, null=True)
resp=models.CharField(max_length=20)
datetime=models.DateTimeField(default=timezone.now)
def __unicode__(self):
return u"{} {}".format(self.user.id, self.datetime)
然后你可以使用:
user = User.objects.get(pk=3)
resps = UserResp.objects.filter(user=user)