在django 1.5中扩展第三方模型的最佳方法是什么? 假设我有第三方模型,名为Feedback:
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,
)
...
我有自己的用户类。我需要覆盖用户字段。电子邮件我需要使空白=假,并且可能想要在模型中添加另一个字段。这样做的最佳方式是什么?
答案 0 :(得分:2)
根据具体情况,即您使用的是哪个第三方应用,您可以通过多种方式进行处理:
从模型继承:
class CustomFeedback(反馈): #etc
创建自定义应用:
通过执行django-admin.py startapp AppName_custom
扩展应用程序,这是我用于某些应用程序的技术。在这种情况下,您将希望从上面的类中获取,但会拦截像save
或clean
这样的数据库方法。
分叉应用程序。如果您对Django缺乏经验,这很容易成为最困难的方法。只需通过git
或mercurial
进行克隆或分叉,然后添加修改应用行为所需的任何代码。
根据经验(请原谅表达式),您不应修改User
模型,因为Auth
模块已经很好地进行了比较。相反,您应该使用像django-profiles
这样的应用程序向模型添加数据或扩展表单。
答案 1 :(得分:1)
我认为它能回答你想要的一切。
Django还包括如何在此处执行此操作的文档:https://docs.djangoproject.com/en/dev/topics/auth/customizing/#extending-user
您还可以为Django指定自定义用户模型,以便与AUTH_USER_MODEL =' myapp.MyUser'一起使用。从那里,您可以设置自定义字段。