是否可以忽略Django 1.7+中的系统检查错误

时间:2015-05-30 20:52:43

标签: django django-authentication

我遇到了以下问题: 我有一个旧的(最近升级到Django 1.6)网站,它使用一对一关系的用户配置文件,但对某些模型的FK引用指向auth.User。我在一个单独的子域中构建一个1.8的站点,该子站使用与旧的相同的数据库,并使用旧的两个应用程序,但有一个自定义的auth模型类。我知道我在做什么,并希望为这两个网站的用户提供不同的表格。但系统检查新站点失败,字段为.E301错误:

core.RecipientAccount.created_by: (fields.E301) Field defines a relation with the model 'auth.User', which has been swapped out.
        HINT: Update the relation to point at 'settings.AUTH_USER_MODEL'.

可以解决这个问题吗?或者我只需要为新网站使用1.6或者编写大量自定义迁移来重构旧网站?

1 个答案:

答案 0 :(得分:1)

我暂时找到了问题的解决方案。最终,我重构旧项目以使用它自己的自定义用户模型。但临时修复是使用ForeignKey的子类来引用django.contrib.auth.User,它会跳过对交换模型的检查。

class ForeignKeySkipsSwappedCheck(models.ForeignKey):

    def check(self, **kwargs):
        from django.db.models.fields.related import RelatedField
        errors = super(RelatedField, self).check(**kwargs)
        errors.extend(self._check_related_name_is_valid())
        errors.extend(self._check_relation_model_exists())
        errors.extend(self._check_clashes())
        return errors