2017-10-14 54 views
0

我正在研究一個Django 1.10項目,其中我有一個名爲TaggedArticle的模型,它與具有related_name的用戶相關爲「標記」,現在我想要顯示當我們在Django admin中打開一個用戶對象時,一個TaggedArticle對象表。如何在Django Admin中實現該功能?在Django的用戶模型中添加用戶相關的對象Admin

這裏是我的模型: TaggedArticle:

class TaggedArticle(models.Model): 
    user = models.ForeignKey(User, related_name='tagging') 
    email = models.EmailField(max_length=255) 
    category_fit = models.CharField(choices=choices, max_length=255) 
    article = models.ForeignKey(Article, related_name='articles') 
    link = models.URLField(max_length=255,) 
    relevant_feedback = models.TextField(blank=True) 
    category = models.CharField(max_length=255,) 
    created_at = models.DateTimeField(default=timezone.now, editable=False) 

更新:admin.py

from django.contrib import admin 
from .models import TaggedArticle as Tagged 
from django.contrib.auth.admin import UserAdmin 
from .models import TaggedArticle 
from django.contrib.auth import get_user_model 

User = get_user_model() 
admin.site.unregister(User) 

class InlineTaggedArticle(admin.TabularInline): 
    model = TaggedArticle 

class CustomAdmin(UserAdmin): 
    date_hierarchy = 'date_joined' 
    inlines = [InlineTaggedArticle, ] 
    list_display = list(UserAdmin.list_display) + ['totol_tagged_article'] 

    def totol_tagged_article(self, obj): 
     return obj.tagging.all().count() 

admin.site.register(User, CustomAdmin) 


class TaggedArticleAdmin(admin.ModelAdmin): 
    date_hierarchy = 'created_at' 
    fields = ['category_fit', 'article', 'link', 'relevant_feedback', 'category', 'user', 'email'] 
    list_display = ['article', 'link', 'user', 'email', 'relevant_feedback'] 
    list_filter = ['user', 'email'] 
    model = Tagged 


admin.site.register(Tagged, TaggedArticleAdmin) 

更新:她e爲截圖:

  1. TaggedArticle列表視圖:

enter image description here

  • 詳細爲TaggedArticle頁enter image description here

  • 詳細爲用戶頁面:
  • enter image description here

    在用戶的詳細信息頁面,應顯示從TaggedArticle對象中的所有字段。
    請幫幫我! 在此先感謝!

    回答

    2
    from django.contrib.auth.admin import UserAdmin 
    from .models import TaggedArticle 
    from django.contrib.auth import get_user_model 
    User = get_user_model() 
    admin.site.unregister(User) 
    
    class InlineTaggedArticle(admin.TabularInline): 
        model = TaggedArticle 
    
    
    class CustomAdmin(UserAdmin): 
        inlines = [InlineTaggedArticle,] 
        list_display = list(UserAdmin.list_display) + ['totol_tagged_article'] 
    
        def totol_tagged_article(self, obj): 
         return obj.tagging.all().count() 
    admin.site.register(User, CustomAdmin) 
    

    寫它現在這個樣子,你會看到TaggedArticle表用戶詳細信息頁面Django管理

    +0

    嗨,@NeErAj!另外,如何顯示用戶詳細信息頁面中標記文章的總數? –

    +0

    以上代碼將在django管理員的用戶詳細信息頁面中顯示所有標記的文章。 你試過上面的代碼嗎? –

    +0

    是的,它的工作!但現在我需要顯示標籤文章的總數! –

    1

    可以在admin.py

    from django.contrib import admin 
    
    # Register your models here. 
    
    from .models import TaggedArticle 
    class UserProfileAdmin(admin.ModelAdmin): 
        list_display = [''] 
    admin.site.register(TaggedArticle,TaggedArticleAdmin) 
    
    相關問題