私は自分のデータベースをリセットして何らかの理由でこのエラーが発生しました:Djangoでは、モデルによって、自動IDフィールドがnull = Trueに設定され、IntegrityErrorを取得します。 "nullではない可能性があります"
IntegrityError: main_funding_rounds_investments.investment_id may not be NULL
自動IDフィールドがnullになる方法や理由はわかりません。誰かがアイデアを持っているなら、私はそれを大いに感謝します!
私はinspectdbでデシベルをチェックすると、私は次を得る:
class MainFundingRoundsInvestments(models.Model):
id = models.IntegerField(primary_key=True)
funding_rounds_id = models.IntegerField()
investment_id = models.IntegerField()
class Meta:
db_table = u'main_funding_rounds_investments'
と
class MainInvestment(models.Model):
id = models.IntegerField(primary_key=True)
class Meta:
db_table = u'main_investment'
ここでは私のモデルです:
#funding rounds
class funding_rounds(models.Model):
funded_day = models.IntegerField(null=True)
investments = models.ManyToManyField("Investment")
class Investment(models.Model):
company = models.ManyToManyField("Company", null=True, related_name ="Investments_company")
financial_org = models.ManyToManyField("Financial_org", null=True, related_name ="Investments_financial_org")
person = models.ManyToManyField("Person", null=True, related_name ="Investments_person")
私が作成した場所ですオブジェクト:
def save_dict_to_db_R(model_class ,dicta):
testCo = model_class()
for key,value in dicta.items():
try:
field = model_class._meta.get_field(key)
if isinstance(field, models.ManyToManyField):
continue
else:
if model_class._meta.get_field(key):
print("i == something:" + key + " ")
setattr(testCo, key, value)
except FieldDoesNotExist:
continue
testCo.save(
for field in model_class._meta.many_to_many:
if field.name in dicta and hasattr(dicta[field.name], 'append'):
for obj in dicta[field.name]:
rel_instance = save_dict_to_db_R(field.rel.to, obj)
getattr(testCo, field.name).add(rel_instance)
これはDjangoによって自動的に設定されます。私はAutoFieldが実際にIntegerFieldだと思いますか? Docs:[Primary Key](https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.Field.primary_key) – Riku
Djangoによって追加された主キーは、データベース、はい。 'AutoField'は、Djangoモデルで作業するときに自動増分フィールドを表すPythonラッパーです。さらに、['inspectdb'](https://docs.djangoproject.com/en/dev/ref/django-admin/#inspectdb)は、モデルフィールドに必要なラッパーを推測することができないので、' IntegerField'をPKはそれがデータベースのように見えるからです。 –