我创建了以下模型:
学校/ 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]。
在这种情况下,有没有办法将用户“推广”为父母?降级怎么样?
参考:
答案 0 :(得分:1)
我假设你要找的是处理权限。普通的django用户可以做某些事情,而父母可以做其他事情。这是对的吗?
在这种情况下,更好的用例是使用具有django权限的内置组。因此,您可以创建一个名为parent的组。哪个具有某些权限,而普通的django用户无法执行这些操作。您可以在文档中详细了解permissions。
如果您要向用户添加更多数据,最好将其添加到您OneToOneField
User
的个人资料中