2016-09-11 102 views
0

有沒有辦法在管理面板中選擇顯示的對象?管理面板中相關對象之間的過濾

例如我有兩個用戶,蛋和aegon。如果我在用戶交易下查看用戶蛋的個人資料,我可以查看所有交易,也可以查看用於aegon的交易。但我想過濾這隻顯示蛋的交易。

enter image description here

型號:

class transaction(models.Model): 
    amount = models.IntegerField() 
    holding = models.ForeignKey(holding, on_delete=models.CASCADE) 
    user = models.ForeignKey(User, on_delete=models.CASCADE, blank=True, null=True) 

    def __str__(self): 
     return "amount: " + str(self.amount) + " - ip : " + str(self.holding.name) + " - user: " + str(self.user.username) 

class UserProfile(models.Model): 
    user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True) 
    ip = models.IntegerField(default=0) 
    ingameName = models.CharField(max_length=50, default='NotSet')  
    userprofit = models.IntegerField(default=0) 

    user_transactions = models.ForeignKey(transaction, on_delete=models.CASCADE, blank=True, null=True) 

管理:

class UserProfileInline(admin.StackedInline): 
    model = UserProfile 
    can_delete = False 
    verbose_name_plural = 'profile' 

class UserAdmin(UserAdmin): 
    inlines = (UserProfileInline,) 

回答

1

是的,但你必須來覆蓋的管理形式和的__init__()方法篩選選擇表格。形式__init__()應該是某事像這樣(警告 - 未經測試的代碼):

def __init__(self, *args, **kwargs): 
    super().__init__(*args, **kwargs) 
    self.fields['user_transactions'].choices = transaction.objects.filter(user_id=user_id) 

有關如何覆蓋管理的形式,檢查出的文檔信息:https://docs.djangoproject.com/en/1.9/ref/contrib/admin/#django.contrib.admin.ModelAdmin.form