如何在django中过滤外键字段?

时间:2015-11-15 05:19:38

标签: django orm

a = pd.Series([1,2,3,4,5,6,7,9,10])
b = pd.Series([1,3,5,9,2,8,5,5,15])
lc= pd.Series([1,3,4,5,6,7,9,3,2])
c = pd.Series([2,4,5,7,8,8,9,4,3])
hc= pd.Series([3,5,7,7,9,11,9,5,8])

如果存在此模型,我如何通过帖子过滤特定组中特定日期的用户?

ex)上周在A组发布的用户

_group =>特定群体

class Group(models.Model):
    pass

class User(models.Model):
    groups = models.ManyToManyField(Group)

class Post(models.Model):
    user = models.ForeignKey(User, related_name='posts')
    created_time = models.DateTimeField()

我使用此代码,但我无法让任何在特定日期发帖的用户。

2 个答案:

答案 0 :(得分:0)

如果您需要用户,则应使用用户模型启动查询:

User.objects.filter(
    groups__in=[_group], 
    posts__created_time__gt=from_date, 
    posts__created_time__lt=to_date
)

答案 1 :(得分:0)

我认为您只需要在UserPost之间添加关系。此外,您不需要覆盖现有的django用户,您只能继承它的字段并添加自己的。:

from django.contrib.auth.models import AbstractUser

class Group(models.Model):
    pass

class UserProfile(AbstractUser):
    groups = models.ManyToManyField(Group)

class Post(models.Model):
    author = models.ForeignKey(UserProfile, related_name='posts')
    created_time = models.DateTimeField()

现在您可以通过以下方式轻松完成查询:

UserProfile.objects.filter(posts__created_published__range=[from_date, to_date])