繁体   English   中英

检索与Django中特定外键相关的所有对象

[英]Retrieve all objects related to a particular foreign key in django

我有以下model.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”。 表userresp中有两条记录,其中uid = 3。 怎么做?

首先, uid不是该字段的好名字。 STH。 user这样更适合,因为给定一个userresp (类名应为驼峰大小写,btw)实例respresp.uid将为您提供一个User 实例 ,而不是其id。 您可以通过resp.uid_id来获取ID(这使名称明显resp.uid_id )。 无论如何,

resps = userresp.objects.filter(uid_id=3)

将工作。 如果有User实例,使用related_name FK的领域,例如:

user = get_user_model().objects.get(id=3)
resps = user.userresp_set.all()

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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM