2015-10-15 164 views
0

我想自定義Django接口。 我有一個CategoryAdmin(admin.ModelAdmin),它有一個foreignkey自己,每個類別可以從同一個表中的SubCategories。過濾|後控制查詢集Django Admin

每個具有子類別的類別都將顯示爲內聯。 基本上在查詢集我想告訴那些誰的父母= 0,所以我overrided get_queryet這主要類別:由家長= 0

def get_queryset(self, request): 
    if request.user.is_superuser: 
     qs = super(CategoryAdmin, self).get_queryset(request) 
     return qs 

    company = CompanyUsers.objects.filter(UserId = request.user.id) #not relevant 
    companyid = company.values_list('CompanyId', flat=True) #not relevant 
    qs = Category.objects.filter(CompanyId = companyid, Parent = 0) 
    return qs 

現在,當用戶挑選類別之一,內聯進行過濾但點擊到變化他們當我得到了錯誤:

「與主鍵類對象的‘x’不存在」

如何篩選僅在主類別查詢集什麼想法?

注意:當刪除「Parent = 0」時,錯誤消失。

注2:可能有助於瞭解哪個實例被點擊。我知道這是可能通過重寫get_formset可惜get_queryset是get_formset :(

非常感謝之前調用。

回答

1

父是指分類對象,爲什麼還要用0,而不是無呢?家長必須是一個對象不是整數。

  1. 重命名屬性CompanyId,家長必須成爲companyId,父母
  2. 在您的範疇類中聲明父爲:

    父= models.ForeignKey(用戶,空=真,空白= True,則默認值=無)

獨生子女類別將有一個家長的關係,如果一類是父母,然後父母將無。然後,當你想獲得父類別,你會過濾你的查詢,如:

Category.objects.filter(companyId = companyid, parent = None) 

此外,父母將是一個類別對象不是整數。

+0

父指的是表中的PK,因此不能爲無。另外,我沒有看到這是如何解決我的問題。 – YanivMor

+0

爲什麼外鍵不能爲空? – Kostas

+0

您可以看到更新的答案以獲取更多信息。 – Kostas