簡體   English   中英

在Django中擴展模型的正確方法

[英]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,
    )
    ...

我有自己的用戶類。 我需要覆蓋用戶字段。 電子郵件我需要使空白=假,並且可能想要在模型中添加另一個字段。 做這個的最好方式是什么?

根據具體情況,即您使用的是哪個第三方應用,您可以通過多種方式進行處理:

  1. 明確繼承自模型:

    class CustomFeedback(反饋):#etc

  2. 創建自定義應用程序:通過執行django-admin.py startapp AppName_custom擴展應用程序,這是我用於某些應用程序的技術。 在這種情況下,您將希望從上面的類中獲取但是攔截DB方法,如saveclean

  3. 分叉應用程序。 如果您對Django缺乏經驗,這很容易成為最困難的方法。 只需通過gitmercurial克隆或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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM