我的模特看起来像这样:
class Startup(Model):
unique_name = TextField("Lowercase Name", null=True, unique=True)
top_level_domain = TextField("Top Level Domain", null=True, unique=True)
main_company_name = TextField("Company Name", null=True)
main_short_description = TextField("Short Description", null=True)
main_homepage = URLField("Company Homepage", null=True, max_length=500)
和
class Batch8(models.Model):
# primary contact person
first_name = models.TextField()
last_name = models.TextField()
role = models.TextField()
# more fields here
我不想更改现有数据库,因此我创建了连接模型:
class Batch8Startup(Startup):
startup = models.OneToOneField(
Startup,
on_delete=models.CASCADE,
parent_link=True,
related_name='batch8_startup'
)
batch8 = models.OneToOneField(Batch8,
on_delete=models.CASCADE)
(对related_name
我也尝试了OneToOneField
和明确Startup
。
然后我尝试通过以下方式填充此表:
applications = Batch8.objects.all()
for app in applications:
app_tld = self.get_top_level_domain(app.homepage)
new_startup = Startup(top_level_domain=app_tld, main_company_name=app.company_name, main_homepage=app.homepage)
new_startup.save()
Batch8Startup.objects.create(startup_id=new_startup.id, batch8_id=app_id)
以及
batch8p = Batch8Startup(startup=new_startup, batch8_id=app_id)
batch8p.save()
这相当于我所知。
然后在数据库中创建条目,通过创建Batch8Startup对象创建并立即覆盖到null
。
这是预期的行为吗?如果是这样,为什么以及如何正确设置此表?