2016-09-11 4 views
0

관리 패널에서 표시된 개체를 선택하는 방법이 있습니까?관리 패널의 관련 개체 간 필터링

예를 들어 나는 두 명의 사용자 인 egg와 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__() 방법의 선택을 필터링해야합니다 형태. https://docs.djangoproject.com/en/1.9/ref/contrib/admin/#django.contrib.admin.ModelAdmin.form

: 워드 프로세서 확인, 관리 양식을 무시하는 방법에 대한 자세한 내용은

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

: - 양식 __init__()이 (테스트되지 않은 코드 경고)처럼 STH를 보일 것