- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我尝试运行 makemigrations 时,出现以下错误。
ERRORS:
remoshin_manager_sys.RemoshinDoctor.groups: (fields.E304) Reverse accessor for 'RemoshinDoctor.groups' clashes with reverse accessor for 'RemoshinManager.groups'.
HINT: Add or change a related_name argument to the definition for 'RemoshinDoctor.groups' or 'RemoshinManager.groups'.
remoshin_manager_sys.RemoshinDoctor.groups: (fields.E304) Reverse accessor for 'RemoshinDoctor.groups' clashes with reverse accessor for 'RemoshinUser.groups'.
HINT: Add or change a related_name argument to the definition for 'RemoshinDoctor.groups' or 'RemoshinUser.groups'.
remoshin_manager_sys.RemoshinDoctor.user_permissions: (fields.E304) Reverse accessor for 'RemoshinDoctor.user_permissions' clashes with reverse accessor for 'RemoshinManager.user_permissions'.
HINT: Add or change a related_name argument to the definition for 'RemoshinDoctor.user_permissions' or 'RemoshinManager.user_permissions'.
remoshin_manager_sys.RemoshinDoctor.user_permissions: (fields.E304) Reverse accessor for 'RemoshinDoctor.user_permissions' clashes with reverse accessor for 'RemoshinUser.user_permissions'.
HINT: Add or change a related_name argument to the definition for 'RemoshinDoctor.user_permissions' or 'RemoshinUser.user_permissions'.
remoshin_manager_sys.RemoshinManager.groups: (fields.E304) Reverse accessor for 'RemoshinManager.groups' clashes with reverse accessor for 'RemoshinDoctor.groups'.
HINT: Add or change a related_name argument to the definition for 'RemoshinManager.groups' or 'RemoshinDoctor.groups'.
remoshin_manager_sys.RemoshinManager.groups: (fields.E304) Reverse accessor for 'RemoshinManager.groups' clashes with reverse accessor for 'RemoshinUser.groups'.
HINT: Add or change a related_name argument to the definition for 'RemoshinManager.groups' or 'RemoshinUser.groups'.
remoshin_manager_sys.RemoshinManager.user_permissions: (fields.E304) Reverse accessor for 'RemoshinManager.user_permissions' clashes with reverse accessor for 'RemoshinDoctor.user_permissions'.
HINT: Add or change a related_name argument to the definition for 'RemoshinManager.user_permissions' or 'RemoshinDoctor.user_permissions'.
remoshin_manager_sys.RemoshinManager.user_permissions: (fields.E304) Reverse accessor for 'RemoshinManager.user_permissions' clashes with reverse accessor for 'RemoshinUser.user_permissions'.
HINT: Add or change a related_name argument to the definition for 'RemoshinManager.user_permissions' or 'RemoshinUser.user_permissions'.
remoshin_manager_sys.RemoshinUser.groups: (fields.E304) Reverse accessor for 'RemoshinUser.groups' clashes with reverse accessor for 'RemoshinDoctor.groups'.
HINT: Add or change a related_name argument to the definition for 'RemoshinUser.groups' or 'RemoshinDoctor.groups'.
remoshin_manager_sys.RemoshinUser.groups: (fields.E304) Reverse accessor for 'RemoshinUser.groups' clashes with reverse accessor for 'RemoshinManager.groups'.
HINT: Add or change a related_name argument to the definition for 'RemoshinUser.groups' or 'RemoshinManager.groups'.
remoshin_manager_sys.RemoshinUser.user_permissions: (fields.E304) Reverse accessor for 'RemoshinUser.user_permissions' clashes with reverse accessor for 'RemoshinDoctor.user_permissions'.
HINT: Add or change a related_name argument to the definition for 'RemoshinUser.user_permissions' or 'RemoshinDoctor.user_permissions'.
remoshin_manager_sys.RemoshinUser.user_permissions: (fields.E304) Reverse accessor for 'RemoshinUser.user_permissions' clashes with reverse accessor for 'RemoshinManager.user_permissions'.
HINT: Add or change a related_name argument to the definition for 'RemoshinUser.user_permissions' or 'RemoshinManager.user_permissions'.
我可以获得很多有关此错误的信息。但我的情况似乎没有。
我有 3 个项目,每个项目都有不同的自定义用户模型。我使用来自 3 个项目的一个数据库,每个项目都有自己的自定义用户模型。
remoshin_user_sys/RemoshinUser
remoshin_clinic_sys/RemoshinDoctor
remoshin_manager_sys/RemoshinManager
当我尝试从 remoshin_manager_sys 运行 makemigrations 时发生此错误。我不想将 RemoshinDoctor 和 RemoshinUser 设置为 RemoshinManager 的自定义用户模型。
我的settings.py如下。
AUTH_USER_MODEL = 'remoshin_manager_sys.RemoshinManager'
如何避免此错误?
添加我的 models.py。
class RemoshinUserManager(BaseUserManager):
def _create_user(self, email, password, is_staff, is_superuser, **extra_fields):
now = timezone.now()
if not email:
raise ValueError('User must have a e-mail address.')
email = self.normalize_email(email)
user = self.model(email=email,
is_staff=is_staff, is_active=True,
is_superuser=is_superuser, last_login=now,
date_joined=now, **extra_fields)
user.set_password(password)
user.save(using=self._db)
return user
def create_user(self, email, password, **extra_fields):
return self.create_user(email, password, False, False, **extra_fields)
def create_superuser(self, email, password):
return self.create_user(user_email, password, True, True, **extra_fields)
@receiver(post_save, sender=settings.AUTH_USER_MODEL)
def create_auth_token(sender, instance=None, created=False, **kwargs):
if created:
Token.objects.create(user=instance)
class RemoshinUser(AbstractBaseUser, PermissionsMixin):
email = models.CharField(max_length=128, primary_key=True)
username = models.CharField(max_length=64)
user_kana_name = models.CharField(max_length=32, blank=True)
password = models.CharField(max_length=128)
user_birthdate = models.DateField(null=True, blank=True)
user_sex = models.SmallIntegerField(null=True)
user_postno = models.CharField(max_length=7, blank=True)
user_address1 = models.CharField(max_length=128)
user_address2 = models.CharField(max_length=128, blank=True)
user_telno = models.CharField(max_length=16, blank=True)
user_photo = models.ImageField(blank=True)
authentication_status = models.BooleanField(default=False)
create_date = models.DateTimeField(auto_now_add=True)
modify_date = models.DateTimeField(auto_now=True)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['user_name', 'user_telno']
objects = RemoshinUserManager()
class Meta:
verbose_name = _('user')
verbose_name_plural = _('users')
db_table = 'remosys_remoshin_user_tbl'
def get_absolute_url(self):
return "/users/%s" % urlquote(self.email)
def email_user(self, subject, message, from_email=None):
send_mail(subject, message, from_email, [self_email])
class RemoshinDoctorManager(BaseUserManager):
def _create_user(self, email, password, is_staff, is_superuser, **extra_fields):
now = timezone.now()
if not email:
raise ValueError('Doctor must have a e-mail address.')
email = self.normalize_email(email)
doctor = self.model(email=email,
is_staff=is_staff, is_active=True,
is_superuser=is_superuser, last_login=now,
date_joined=now, **extra_fields)
doctor.set_password(password)
doctor.save(using=self._db)
return doctor
def create_user(self, email, password, **extra_fields):
return self.create_user(email, password, False, False, **extra_fields)
def create_superuser(self, email, password):
return self.create_user(email, password, True, True, **extra_fields)
@receiver(post_save, sender=settings.AUTH_USER_MODEL)
def create_auth_token(sender, instance=None, created=False, **kwargs):
if created:
Token.objects.create(user=instance)
class RemoshinDoctor(AbstractBaseUser, PermissionsMixin):
doctor_id = models.CharField(max_length=16, primary_key=True)
clinic_id = models.ForeignKey(Clinic)
email = models.CharField(max_length=128)
password = models.CharField(max_length=128)
username = username = models.CharField(max_length=64)
doctor_photo = models.ImageField(blank=True, null=True)
create_date = models.DateTimeField(auto_now_add=True)
modify_date = models.DateTimeField(auto_now=True)
USERNAME_FIELD = 'doctor_id'
REQUIRED_FIELDS = ['clinic_id', 'email', 'password', 'username']
objects = RemoshinDoctorManager()
class Meta:
verbose_name = _('doctor')
verbose_name_plural = _('doctors')
db_table = 'remosys_remoshin_doctor_tbl'
def get_absolute_url(self):
return "/doctors/%s" % urlquote(self.doctor_id)
class RemoshinManagerManager(BaseUserManager):
def _create_user(self, username, email, password, is_staff, is_admin, **extra_fields):
now = timezone.now()
if not email:
raise ValueError('Manager must have a e-mail address.')
email = self.normalize_email(email)
manager = self.model(username=username, email=email,
is_active=True,
is_superuser=is_admin,
is_staff=is_staff,
create_date=now,
modify_date=now, **extra_fields)
manager.set_password(password)
manager.save(using=self._dåb)
return manager
def create_user(self, username, email, password, **extra_fields):
return self._create_user(username, email, password, False, False, **extra_fields)
def create_superuser(self, username, email, password, **extra_fields):
return self._create_user(username, email, password, True, True, **extra_fields)
@receiver(post_save, sender=settings.AUTH_USER_MODEL)
def create_auth_token(sender, instance=None, created=False, **kwargs):
if created:
Token.objects.create(user=instance)
class RemoshinManager(AbstractBaseUser, PermissionsMixin):
manager_id = models.CharField(max_length=16, primary_key=True)
email = models.CharField(max_length=128)
password = models.CharField(max_length=128)
username = models.CharField(max_length=64)
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
is_staff = models.BooleanField(default=False)
create_date = models.DateTimeField(default=timezone.now)
modify_date = models.DateTimeField(default=timezone.now)
USERNAME_FIELD = 'username'
REQUIRED_FIELDS = ['email']
objects = RemoshinManagerManager()
class Meta:
verbose_name = _('manager')
verbose_name_plural = _('managers')
db_table = 'remosys_remoshin_manager_tbl'
def get_absolute_url(self):
return "/managers/%s" % urlquote(self.manager_id)
def email_user(self, subject, message, from_email=None):
send_mail(subject, message, from_email, [self.email])
def user_has_perm(username, perm, obj):
A backend can raise `PermissionDenied` to short-circuit permission checking.
return _user_has_perm(username, perm, obj)
def has_perm(self, perm, obj=None):
return _user_has_perm(self, perm, obj=obj)
def has_module_perms(self, app_label):
return self.is_superuser
def get_short_name(self):
return self.first_name
@property
def is_superuser(self):
return self.is_admin
class Consultation(models.Model):
consultation_id = models.CharField(max_length=8, primary_key=True)
user_email = models.ForeignKey(RemoshinUser)
clinic_id = models.ForeignKey(Clinic)
doctor_id = models.ForeignKey(RemoshinDoctor)
consultation_datetime = models.DateTimeField(auto_now=True)
consultation_status = models.BooleanField(default=False)
prescription = models.TextField(blank=True)
prescription_status = models.SmallIntegerField(default=0)
payment_status = models.SmallIntegerField(default=0)
create_date = models.DateTimeField(auto_now_add=True)
modify_date = models.DateTimeField(auto_now=True)
class Meta:
db_table = 'remosys_consultation_tbl'
# swappable = 'settings.AUTH_USER_MODEL'
最佳答案
我将用一个例子来解释这个错误:
假设您有这两个模型。
class Book(Models.model):
title = models.CharField(maxlength = 100)
class Person(Models.model):
name = models.CharField(max_length = 100)
own_book = models.ForeignKey('Book')
简单的模型,但棘手的部分是只要定义外键,Django 就会构建反向引用:如果 person
是一个查询对象,则对她拥有的书名的前向引用将是: person.own_book.title
。
现在,如果您想知道拥有某本书的人的名字? Django 构建反向关系,默认采用模型名称。也就是说,“book”是一个查询集对象,您可以使用 book.person.name
查找拥有这本书的人员姓名。很酷,对吧?它会查看您的外键。
现在,向同一本书模型添加另一个外键:
class Person(Models.model):
name = models.CharField(max_length = 100)
wrote_book = models.ForeignKey('Book')
own_book = models.ForeignKey('Book')
您的转发关系仍然定义良好:person.wrote_book.title
和 person.own_book.title
。但是 book.person.name
应该做什么呢?查找拥有这本书的人的姓名?这本书是由谁写的?或两者? django 只是抛出你的反向访问器错误
。
如何解决? Djangos 告诉您在模型中创建一个 related_name:
class Person(Models.model):
name = models.CharField(max_length = 100)
wrote_book = models.ForeignKey('Book', related_name = 'wrote')
own_book = models.ForeignKey('Book', related_name = 'own')
因此,book.person.name
不再存在(默认被覆盖),它被book.own.name
和book.wrote取代。名称
。
所以我的猜测是:查找在 groups
和 user_permissions
模型中定义的外键,并在其上放置 related_names 参数。
关于python - 当 models.py 中有 3 个自定义模型时,Django makemigrations 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45910786/
好的,所以我编辑了以下... 只需将以下内容放入我的 custom.css #rt-utility .rt-block {CODE HERE} 但是当我尝试改变... 与 #rt-sideslid
在表格 View 中,我有一个自定义单元格(在界面生成器中高度为 500)。在该单元格中,我有一个 Collection View ,我按 (10,10,10,10) 固定到边缘。但是在 tablev
对于我的无能,我很抱歉,但总的来说,我对 Cocoa、Swift 和面向对象编程还很陌生。我的主要来源是《Cocoa Programming for OS X》(第 5 版),以及 Apple 的充满
我正在使用 meta-tegra 为我的 NVIDIA Jetson Nano 构建自定义图像。我需要 PyTorch,但没有它的配方。我在设备上构建了 PyTorch,并将其打包到设备上的轮子中。现
在 jquery 中使用 $.POST 和 $.GET 时,有没有办法将自定义变量添加到 URL 并发送它们?我尝试了以下方法: $.ajax({type:"POST", url:"file.php?
Traefik 已经默认实现了很多中间件,可以满足大部分我们日常的需求,但是在实际工作中,用户仍然还是有自定义中间件的需求,为解决这个问题,官方推出了一个 Traefik Pilot[1] 的功
我想让我的 CustomTextInputLayout 将 Widget.MaterialComponents.TextInputLayout.OutlinedBox 作为默认样式,无需在 XML 中
我在 ~/.emacs 中有以下自定义函数: (defun xi-rgrep (term) (grep-compute-defaults) (interactive "sSearch Te
我有下表: 考虑到每个月的权重,我的目标是在 5 个月内分散 10,000 个单位。与 10,000 相邻的行是我最好的尝试(我在这上面花了几个小时)。黄色是我所追求的。 我试图用来计算的逻辑如下:计
我的表单中有一个字段,它是文件类型。当用户点击保存图标时,我想自然地将文件上传到服务器并将文件名保存在数据库中。我尝试通过回显文件名来测试它,但它似乎不起作用。另外,如何将文件名添加到数据库中?是在模
我有一个 python 脚本来发送电子邮件,它工作得很好,但问题是当我检查我的电子邮件收件箱时。 我希望该用户名是自定义用户名,而不是整个电子邮件地址。 最佳答案 发件人地址应该使用的格式是: You
我想减小 ggcorrplot 中标记的大小,并减少文本和绘图之间的空间。 library(ggcorrplot) data(mtcars) corr <- round(cor(mtcars), 1)
GTK+ noob 问题在这里: 是否可以自定义 GtkFileChooserButton 或 GtkFileChooserDialog 以删除“位置”部分(左侧)和顶部的“位置”输入框? 我实际上要
我正在尝试在主页上使用 ajax 在 magento 中使用 ajax 显示流行的产品列表,我可以为 5 或“N”个产品执行此操作,但我想要的是将分页工具栏与结果集一起添加. 这是我添加的以显示流行产
我正在尝试使用 PasswordResetForm 内置函数。 由于我想要自定义表单字段,因此我编写了自己的表单: class FpasswordForm(PasswordResetForm):
据我了解,新的 Angular 7 提供了拖放功能。我搜索了有关 DnD 的 Tree 组件,但没有找到与树相关的内容。 我在 Stackblitz 上找到的一个工作示例.对比drag'ndrop功能
我必须开发一个自定义选项卡控件并决定使用 WPF/XAML 创建它,因为我无论如何都打算学习它。完成后应该是这样的: 到目前为止,我取得了很好的进展,但还有两个问题: 只有第一个/最后一个标签项应该有
我要定制xtable用于导出到 LaTeX。我知道有些问题是关于 xtable在这里,但我找不到我要找的具体东西。 以下是我的表的外观示例: my.table <- data.frame(Specif
用ejs在这里显示日期 它给我结果 Tue Feb 02 2016 16:02:24 GMT+0530 (IST) 但是我需要表现为 19th January, 2016 如何在ejs中执行此操作?
我想问在 JavaFX 中使用自定义对象制作 ListView 的最佳方法,我想要一个每个项目如下所示的列表: 我搜了一下,发现大部分人都是用细胞工厂的方法来做的。有没有其他办法?例如使用客户 fxm
我是一名优秀的程序员,十分优秀!