[英]Using Django Multi-table inheritance and OneToOneField
我创建了以下模型:
学校/ models.py:
from django.contrib.auth.models import User
(...)
class Parent(User):
contract = models.ForeignKey(Contract)
user = models.OneToOneField(User, parent_link = True, related_name = 'school_parent')
现在,我试图将普通的django用户“提升”为学校家长:
>>> from django.contrib.auth.models import User
>>> from school.models import Parent, Contract
>>> u = User(username = 'myuser')
>>> u.save()
>>> User.objects.all()
[<User: myuser>]
>>> c = Contract.objects.get(pk = 1)
>>> p = Parent(user = u, contract = c)
>>> p.save()
>>> User.objects.all()
[<User: >]
>>>
显然,在“父”创建中,用户“ myuser”被销毁。 Django文档显示[1],您可以按照我的方式通过OneToOneField将一个模型“附加”到另一个模型。 它还说多表继承会自动创建一个OneToOneField [2]。
在这种情况下,是否有办法将用户“提升”为父母? 降级呢?
参考:
我假设您正在寻找的是处理权限。 普通的django用户可以做某些事情,而Parent可以做其他事情。 那是对的吗?
在这种情况下,更好的用例是使用具有django权限的内置组。 因此,您可以创建一个名为“父母”的组。 具有一定的权限,而普通的django用户则不能做那些事情。 您可以在文档中阅读有关权限的更多信息。
如果您要向用户添加更多数据,最好将其添加到User
具有OneToOneField
的配置文件中
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.