如何仅保存子模型的字段,而不影响父模型Django的字段?

时间:2019-06-16 19:39:35

标签: python django django-models

我有一个应用程序“配置文件”和两个模型:“人类”和“客户端”。 “人”模型扩展了内置的“用户”模型。 “客户”模型扩展了“人”模型。

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。对不起,我的英语

0 个答案:

没有答案