2015-11-15 58 views
0
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() 

如果這個模型存在,我怎麼能通過郵件過濾關於特定組中的特定日期的用戶?上週誰後,A組如何過濾django中的外鍵字段?

_group =>特定組

_group.user_set.filter(posts__created_time__gt=from_date, posts__created_time__lt=to_date) 

EX)的用戶我用這個代碼,但我不能讓已在特定日期的信息的任何用戶。

回答

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]) 
+0

這段代碼同樣是空的結果。如果沒有使用「posts__created_published__range = [from_date,to_date]」,我可以得到整個數據。我不知道爲什麼我不能得到具體的日期。 – egaoneko

+0

@egaoneko,你確定有一定範圍內的物體嗎? – pythad

+0

這是我的錯誤,我有一個錯誤,從from_date切換到to_date。謝謝! – egaoneko

0

如果你想要用戶,你應該開始與用戶模型查詢:

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

該代碼也是一樣的空白結果。如果使用「User.objects.filter(groups__in = [_group])」,我可以得到整個數據。我不知道爲什麼我不能得到具體的日期。 – egaoneko

+0

這是我的錯誤,我有一個錯誤,從from_date切換到to_date。謝謝! – egaoneko

+0

我明白了。我可以問一個問題嗎?我獲得了用戶數據。但我不知道如何獲得發佈特定日期的帖子?用戶的帖子字段包含發佈完整日期的帖子。 – egaoneko