gpt4 book ai didi

python - Django 模型 : Common Ancestor Inheritance & Migration

转载 作者:太空宇宙 更新时间:2023-11-04 08:08:47 25 4
gpt4 key购买 nike

我想我会通过开发一个大型商业应用程序来娱乐一下,从而用 Django 提升我的 python 游戏。我发现需要一种共同祖先方法来进行模型继承,并尝试根据 official documentation 实现它.但是,我不断收到这个非常烦人的消息,我不知道该如何处理。

  • Dj 版本: Django 1.7
  • Py版本:Python 3.4.2

留言

$ python manage.py makemigrations
You are trying to add a non-nullable field 'businessentity_ptr' to business without a default; we can't do that (the database needs something to populate existing rows).

Please select a fix:
1) Provide a one-off default now (will be set on all existing rows)
2) Quit, and let me add a default in models.py

模型.py

class BusinessEntity(models.Model):
title = models.CharField(max_length=180)

def __str__(self):
return self.title


class Business(BusinessEntity):
description = models.TextField(max_length=600)
claimed = models.BooleanField(default=False)
slug = models.SlugField()
timestamp = models.DateTimeField(auto_now_add=True, auto_now=False)
updated = models.DateTimeField(auto_now_add=False, auto_now=True)

def __str__(self):
return self.description

我尝试过的(每个人都会讨厌):

  1. 删除数据库并重新迁移
  2. 为所有字段设置默认值
  3. 将所有字段设置为 null = True

我已经看到了解决此问题的方法,但我认为这不是一个好方法。也许外面有人更了解 Django Common Ancestors 并为我指明了正确的方向。

最佳答案

因为你的父模型是抽象的,你应该这样标记它。

class BusinessEntity(models.Model):
title = models.CharField(max_length=180)

class Meta:
abstract = True

这可以防止 Django 为它创建一个单独的表,因此需要一个 _ptr 字段从子类中指向它。相反,将为您的子类创建表以直接包含继承的字段。

关于python - Django 模型 : Common Ancestor Inheritance & Migration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26780098/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com