2017-08-16 18 views
0

私のビューの1つに(RelatedObjectDoesNotExist:UserProfileにはサイトがありません)エラーが表示されますが、管理者はすべてのエラーを出さずにCRUD操作を実行できます。Django:RelatedObjectDoesNotExistビューでは正常に動作しますが、管理者ではうまく動作します

django.db.models.fields.related_descriptors.RelatedObjectDoesNotExist: UserProfile has no site. 

抜粋

class Sites(models.Model): 
    name = models.CharField(max_length=255, blank=True, null=True) 
    active = models.NullBooleanField() 
    created_at = models.DateTimeField(blank=True, null=True) 
    updated_at = models.DateTimeField(blank=True, null=True) 
    logo_file_name = models.CharField(max_length=255, blank=True, null=True) 
    logo_content_type = models.CharField(max_length=255, blank=True, null=True) 
    logo_file_size = models.IntegerField(blank=True, null=True) 
    logo_updated_at = models.DateTimeField(blank=True, null=True) 
    logo_path = models.CharField(max_length=255, blank=True, null=True) 
    account_type = models.CharField(max_length=255, blank=True, null=True) 

    def __str__(self): 
     site_str = 'id = {}, name = {}'.format(self.id, self.name) 
     return site_str 

    class Meta: 
     managed = True 
     db_table = 'sites' 


class UserProfile(models.Model): 
    user = models.OneToOneField(settings.AUTH_USER_MODEL, 
           on_delete=models.CASCADE) 
    site = models.ForeignKey(Sites) 

    def __str__(self): 
     user_profile_str = '{}: {}'.format(self.user.username, str(self.site)) 
     return user_profile_str 
models.py

からの抜粋フォームこのラインでviews.py

@login_required 
def client_list(request): 
    user_profile = UserProfile(user=request.user) 
    print(user_profile.user.username) 
    clients = Clients.objects.filter(site_rec=user_profile.site) 
    return render(request, 'snapreport/clients/all_clients.html', {'clients': clients}) 
+0

クライアントモデルを忘れた場合 – user2021091

+0

@ user2021091クライアントモデルをクエリする前に(user_profile.site)を印刷すると、完全なソースにクライアントモデルが含まれています –

答えて

3

user_profile = UserProfile(user=request.user)ユーザーのための新しいのUserProfileを作成しています。サイトに割り当てないので、user_profile.siteNoneです(またはアクセスしようとするとRelatedObjectDoesNotExistが投げられます)。

は、あなたはおそらくしたい:プロファイルがすでに存在している

user_profile = UserProfile.objects.get(user=request.user) 

場合(siteを持つことになりますことを想定します)。

関連する問題