[英]In Django correct way of extending a model
在django 1.5中擴展第三方模型的最佳方法是什么?
假設我有第三方模型叫做反饋:
class Feedback(models.Model):
user = models.ForeignKey(
'auth.User',
verbose_name=_('User'),
related_name='feedback_form_submissions',
blank=True, null=True,
)
email = models.EmailField(
verbose_name=_('Email'),
blank=True,
)
...
我有自己的用戶類。 我需要覆蓋用戶字段。 電子郵件我需要使空白=假,並且可能想要在模型中添加另一個字段。 做這個的最好方式是什么?
根據具體情況,即您使用的是哪個第三方應用,您可以通過多種方式進行處理:
明確繼承自模型:
class CustomFeedback(反饋):#etc
創建自定義應用程序:通過執行django-admin.py startapp AppName_custom
擴展應用程序,這是我用於某些應用程序的技術。 在這種情況下,您將希望從上面的類中獲取但是攔截DB方法,如save
或clean
。
分叉應用程序。 如果您對Django缺乏經驗,這很容易成為最困難的方法。 只需通過git
或mercurial
克隆或fork,然后添加修改應用程序行為所需的任何代碼。
根據經驗(請原諒表達式),您不應修改User
模型,因為Auth
模塊很好地進行了比較。 相反,您應該使用像django-profiles
這樣的應用程序來向模型添加數據或擴展表單。
你看過這篇文章了嗎? 如何在模型用戶中使用Django中的contrib.auth創建獨特的電子郵件字段
我認為它能回答你想要的一切。
Django還包括如何在此處執行此操作的文檔: https : //docs.djangoproject.com/en/dev/topics/auth/customizing/#extending-user
您還可以為Django指定一個自定義用戶模型,以便與AUTH_USER_MODEL ='myapp.MyUser'一起使用。 從那里,您可以設置自定義字段。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.