2016-09-23 121 views
-1

好的实例化一个子类,现在我改变了我的模型如下:无法保存在我的Django模型

from django.contrib.auth.models import User 

class Company(User): 
    company_name = models.CharField(max_length = 20) 


class Employee(User): 
    pass 

当我从pytho运行manage.py壳下面的命令:

u = Employee(first_name = 'john', last_name = 'smith', password = 'test', email = '[email protected]') 
u.save() 
e = Employee(user = u) 
e.save() 

我得到以下错误,并不能真正理解为什么。 任何帮助表示赞赏,在此先感谢。

+2

请不要尝试推倒重来,你应该关注如何创建你自己的用户模型的djangos文档 – Sayse

+0

找不到任何东西。任何参考? – roccoSenteta

+1

比Sayse走得更远。您**不得**自行实施用户验证。 –

回答

0

书写时:

class x(y) 

在Python,这意味着x延伸Y(从继承)。

类Employee(用户):
         通

让人有点感(雇员是一个用户),这

公司(用户):

根本没有意义(公司不是用户)。

如果希望用户将必须登录为公司的权利,我建议使用外键:

class Company(models.Model): 
    user_with_permissions_fk = models.ManyToManyField((User) 




至于这段代码:

U =雇员(如first_name = '约翰',姓氏= '史密斯',密码= '测试',电子邮件= '[email protected]')
u.save()
E = EM ployee(用户= U)
e.save()

请提供你的语法错误 - 或者,请考虑使用此代码替换:

new_records_to_insert = [] 
new_records_to_insert += Employee(first_name = 'john', last_name = 'smith', password = 'test', email = '[email protected]') 
new_records_to_insert += Employee(first_name = 'john', last_name = 'smith', password = 'test', email = '[email protected]') 
Employee.objects.bulk_create(new_records_to_insert) 
# No need to .save()