Python Django查询:通过两个关系获取数据

Python Django查询:通过两个关系获取数据,python,mysql,django,django-views,foreign-keys,Python,Mysql,Django,Django Views,Foreign Keys,我已经在谷歌上搜索了很多次,并多次阅读了这个网站,但我仍然无法获得正确的数据 我用MAC地址扩展了标准的Django用户模型,因为我以后需要它。我也有这样的模型之间的关系: 一个“Django标准用户”有一个用户配置文件 一个“UserProfile”有许多CalData from django.contrib.auth.models import User class UserProfile(models.Model): user = models.OneToOneField(Use

我已经在谷歌上搜索了很多次,并多次阅读了这个网站,但我仍然无法获得正确的数据

我用MAC地址扩展了标准的Django用户模型,因为我以后需要它。我也有这样的模型之间的关系:

一个“Django标准用户”有一个用户配置文件

一个“UserProfile”有许多CalData

from django.contrib.auth.models import User

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    mac = models.CharField(max_length=17, default='00:00:00:00:00:00')

    def __str__(self):
        return self.user.username

class CalData(models.Model):
    user = models.ForeignKey(UserProfile)
    date = models.DateField(default="1970-01-01")
    timestamp = models.TimeField(default="00:00:00")
    entry_id= models.CharField(max_length=100, default="NoID")
现在从视图中,在用户登录后,我想进行如下查询: “给我一个Caldata的查询(不是对象),其中user=”标准Django用户的用户名“,其中Date=今天

第二个问题是: 将Caldata的ForeignKey设置为“UserProfile”更好,还是将其设置为“User”(标准Django模型)更好。 我的目标是说:一个用户有一个唯一的MAC地址和许多CalData。

第一个问题:

CalData.objects.filter(user__user__username=request.user.username)
为用户提供用户名。双下划线符号在Django中非常强大,可以让您遍历表。如果您有正确的中间件,每个登录的请求都应该有一个用户字段

第二个问题:如果用户没有UserProfile,您希望他们能够与CalData关联吗?如果是,请链接到User,如果不是,则链接到UserProfile。

第一个问题:

CalData.objects.filter(user__user__username=request.user.username)
为用户提供用户名。双下划线符号在Django中非常强大,可以让您遍历表。如果您有正确的中间件,每个登录的请求都应该有一个用户字段


第二个问题:如果用户没有UserProfile,您希望他们能够与CalData关联吗?如果是,请链接到User,如果不是,则链接到UserProfile。

谢谢!成功了!我不知道可以通过双下划线遍历表。如果用户没有用户配置文件,则不允许他与CalData交互。所以我想我t保持原样:)。由于我的分数较低,无法给你一个提升投票:(谢谢!成功了!我不知道你可以通过双下划线遍历表。如果用户没有用户配置文件,他将不被允许与CalData交互。因此我猜它保持原样:)。由于我的分数较低,无法给你一个提升投票:(