我的模特有一个超级课程如下:
class BaseModel(models.Model):
""" BaseClass vase aksare model ha """
def __init__(self, *args, **kwargs):
super(BaseModel, self).__init__(args, kwargs)
print('******> base model __init__')
status = models.IntegerField(default=1)
is_deleted = models.BooleanField(default=False)
create_user = models.ForeignKey(User, related_name="%(app_label)s_%(class)s_creator_related")
create_date = models.DateTimeField()
update_date = models.DateTimeField()
update_user = models.ForeignKey(User, related_name="%(app_label)s_%(class)s_updater_related")
class Meta:
abstract = True
def validate(self):
print('^^^^^^^^^^^^^^^^^^^^^^^^^^^^base validation')
我的个人资料模型如下:
class Profile(BaseModel):
def __init__(self, *args, **kwargs):
super(Profile, self).__init__(args, kwargs)
""" User profile """
user = models.OneToOneField(User, related_name='profile')
mobile = models.CharField(max_length=25, null=True)
firstname_en = models.CharField(max_length=500, null=True)
lastname_en = models.CharField(max_length=500, null=True)
gender = models.IntegerField(default=0)
birth_date = models.DateTimeField(null=True)
edu_bg = models.ForeignKey('Category', related_name="profile__edu_bg", null=True)
region = models.ForeignKey('Category', related_name="profile__region", null=True)
credit = models.DecimalField(default=0, decimal_places=6, max_digits=15)
key = models.TextField(null=True)
secret = models.TextField(null=True)
我想插入新的userProfile时出错,如下所示:
TypeError:int()参数必须是字符串,类字节对象或数字,而不是' tuple'。
然后打印变量(userprofileObject)并实现'id': ((), {})
,但是,我没有设置它。当我删除__init__
函数或在插入代码中将ID设置为None
时,问题就解决了。
有什么想法吗?
我需要那些__init__
,也不想在我的代码中设置id=None
答案 0 :(得分:0)
这就是django的模型的工作方式。你不应该改变他们的__init__
方法。
这就是为什么
您可能想要通过覆盖
__init__
方法来自定义模型。但是,如果这样做,请注意不要更改调用签名,因为任何更改都可能阻止保存模型实例。不要覆盖__init__
,而是尝试使用以下方法之一:
# Add a classmethod on the model class:
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=100)
@classmethod
def create(cls, title):
book = cls(title=title)
# do something with the book
return book
book = Book.create("Pride and Prejudice")
来源https://docs.djangoproject.com/en/1.10/ref/models/instances/#django.db.models.Model