2011-05-04 2 views
0

안녕하세요, 저는 장고의 놀라운 세계에 대해 아주 새롭습니다!그것은 단지 장고에서 외래 키 관계를 통해 관련 사용자를 끌어 올 수 있습니다

기본적으로 나는 사용자가 사이트에서 새로운 블로그 게시물을 올렸을 때 이메일을 통해받은 업데이트를 수정하는 데 사용할 수있는 아주 독특한 이메일 알림 시스템을 만드는 프로젝트가 필요합니다.

나는이 프로젝트가 정말 가파른 학습 곡선임을 증명하기 위해이 프로젝트에 대해 많은 질문을 할 것이라고 생각한다. 그래서 나는 이드가 내가 처음 붙잡을 때마다 도움을 청한다.

기본적으로 사용자는, 자신의 마음에 드는 저자 형성 다음 에 대한 모든 새 블로그 게시물 를 업데이트를받을 또는 체크 박스에서 선택에서 선택할 수 있습니다 등

내가으로부터 사용자를 당기고로 실행 한 첫 번째 일은 데이터베이스 각 블로그의 모든 사용자 세부 정보를 얻는 방법을 알고 있지만 두 개 이상의 블로그를 게시 한 사용자에게 중복 된 사용자 세부 정보를 제공합니다. 그래서 나는 블로그를 게시 한 사람에 대해서만 사용자 정보를 얻고 그 세부 정보를 한 번만 얻는 방법이 필요합니다.

모델

class Blog(models.Model): 

    user = models.ForeignKey(User, help_text = "The User posting this blog entry") 
    news = models.ForeignKey(News, unique = True, blank = True, null = True, help_text = "Is this Blog entry related to a news posts IE and Expert Analysis") 
    title = models.CharField(max_length = 120, help_text = "The Title of this blog entry") 
    slug = models.SlugField(max_length = 150, help_text = "This Field is auto-populated by the title field, its simply used for the CMS urls") 
    info = models.TextField() 
    categories = models.ManyToManyField(Categories) 
    sectors = models.ManyToManyField(Sectors) 
    tags = models.ManyToManyField(Tags) 
    published = models.DateTimeField() 
    status = models.CharField(max_length=1, choices=STATUS_CHOICES, default = 'd') 

    class Meta: 
     verbose_name_plural = "Blog entries" 
     verbose_name = "Blog" 
     ordering = ['-published'] 

    def __unicode__ (self): 
     return self.title 

당신은 내가 저자 정보를 저장하는 외래 키로 장고의 사용자 모델을 사용하고 볼 수 있듯이. 나는이 접근법을 폐지하고 블로그 작성자를 위해 별도의 모델을 설정해야합니까? 아니면 내가 작성하려고하는 것이 내장 된 사용자 모델을 사용하여 달성 될 수 있습니까?

그래서 내가 목표로하는 것은 블로그 게시물을 게시 한 모든 사용자의 목록을 가져올 수 있다는 것입니다. 따라서 한 번만 세부 정보를 수집하여 이름과 ID 목록을 제공하므로 사용자가 업데이트를 수신하도록 선택할 수있는 확인란을 사용하여 양식을 만듭니다.

미리 도움 주셔서 감사합니다 !!

답변

1

당신이 사용자에 대해 단일 쿼리를 할 수있는 적어도 하나의 블로그 항목 :

User.objects.exclude(blog=None) 
+0

빠른 응답을 보내 주셔서 감사합니다. 조금 당황 스러웠다. 알아 내지 못했다! 다시 한 번 감사드립니다! –

1

난 당신의 블로그에 관련된 사용자 모델의 블로그 필드가 없기 때문에 다니엘의 솔루션이 어떻게 작동하는지 모르겠어요 모델 (내가 알고있는). 하지만 효과가 있다면 훌륭합니다.

문제가 계속 발생하면 도움이 될 것입니다. 두 가지 옵션이 있습니다. 먼저 ID와 이름이 모두 필요한 경우 작동합니다.

users = Blog.objects.all().order_by('user__username').values('user__id', 
     'user__username').distinct() 

두 번째로, 실제 사용자 개체를 원한다면, 이것이 나중에있을 수도 있습니다.

userids = Blog.objects.all().values_list('user__id', flat=True) 
users = User.objects.filter(pk__in=userids).order_by('username') 
+0

이 답변을 주셔서 감사합니다. 이것은 내가 시도한 것의 라인을 따라 가면서 내가 잘못되어 가고 있는지 알 수있게 해주었습니다. –

관련 문제