在django项目上工作,我有一个Event表。此表中的每个事件都属于特定用户。
class Event(models.Model):
user_id=models.ForeignKey(User, on_delete=models.CASCADE)
event_auth_id=models.CharField(null=True, max_length=225)
event_auth_step2_id=models.CharField(null=True, max_length=225)
event_title=models.CharField(max_length=225)
我正在编写一个关于Event模型的查询,并使用values()方法查找特定列的值,但我还想打印用户模型中该用户的电子邮件ID。查询是: -
events = Event.objects.all().filter(**filters).values('id', 'event_title', 'category', 'event_start_from', 'event_start_to', 'created', 'modified', 'event_status')
如何打印用户表中用户电子邮件的值。我还想添加一个过滤器来按电子邮件ID过滤用户,但想在事件模型上编写查询
答案 0 :(得分:1)
使用__
查询语法访问相关模型'user_id__email'
https://docs.djangoproject.com/en/1.10/topics/db/queries/#lookups-that-span-relationships
events = Event.objects.all().filter(**filters).values('user_id__email', 'id', 'event_title', 'category', 'event_start_from', 'event_start_to', 'created', 'modified', 'event_status')
同样user_id
您的_id
在这里是多余的。当您使用ForeignKey
user_id
回答评论
过滤/排除.exclude(user_id__email='')
的相同想法会排除所有带有电子邮件的用户的活动
events = Event.objects.all().filter(**filters).exclude(user_id__email='').values('user_id__email', 'id', 'event_title', 'category', 'event_start_from', 'event_start_to', 'created', 'modified', 'event_status')