Python和Django的新手問題,這裏是代碼:檢查對象,從基類的收集獲得,是子類的對象在Django
class Client(User)
#some fields
client=Client()
client.save()
user=User.objects.all()[0]
#want to ckeck type of user, expect that it is Client:
isinstance(user,Client) #returns false
#but this works:
isinstance(user,User) #returns true
但我想到的是用戶客戶端。怎麼了?
增加: 需先子類對象,並能正常工作:
if hasattr(user,'client'):
client=user.client
加2:傢伙,你這麼生氣,所以我不敢張貼任何更多的在這個問題:)它是封閉的,我完全理解我對django,python,polymorphism和其他IT技術的知識絕對真空,謝謝))
你做錯了。 Django有一個「組」模型,可以讓你區分不同類型的用戶。不要像這樣繼承Django的'User'類。閱讀這樣的問題:http://stackoverflow.com/questions/4789021/in-django-how-do-i-check-if-a-user-is-in-a-certain-group。這是正確的方法。刪除所有嘗試子類User的代碼。關閉這個問題。並正確使用「Group」重新開始。 – 2012-02-09 10:49:15
爲什麼不要子類用戶? Django允許:https://docs.djangoproject.com/en/dev/topics/db/models/#model-inheritance。我需要擴展用戶自定義字段,所以沒有什麼是與子類綁定。 – 2012-02-09 11:30:11
但用於區分的組看起來很好,我使用它,謝謝 – 2012-02-09 11:33:40