我有一个应用程序“配置文件”和两个模型:“人类”和“客户端”。 “人”模型扩展了内置的“用户”模型。 “客户”模型扩展了“人”模型。
from django.contrib.auth.models import User
class Human(User):
city = models.CharField(max_length=100, blank=True)
address = models.CharField(max_length=150, blank=True)
phone = models.CharField(max_length=30, blank=True)
def __str__(self):
return "{0} ({1})".format(self.username, self.get_full_name())
class Client(Human):
company = models.CharField(max_length=100, blank=True)
discount = models.DecimalField(max_digits=4, decimal_places=2, default=15)
def __str__(self):
return "#{} : {} | {} ({})".format(self.id, self.username, self.get_full_name(), self.company)
在外壳中,我通过“人类”模型创建了一个新条目:
from profile.models import Human
hu = Human(username='first', email='first@test.test', first_name='Mr.First', city='First City', phone="+9876543210")
hu.set_password('12345678')
hu.save()
在数据库中,我看到记录出现在auth_user和profile_human表中
假设我的用户已成为我的客户。现在,我需要向客户端模型添加其他数据。这不是新用户!它的记录已经存在(例如,id = 3)。
如果我这样做:
from profile.models import Client
cli = Client(id=3, company='FST', discount=10.00)
cli.save()
在profile_client表中,将出现一个条目,其中包含指定字段中的信息。而且,在auth_user和profile_human表中,所有字段中的所有信息都消失了。
问题:如何仅保存子模型的字段,而不影响父模型的字段?
p.s。对不起,我的英语