Django 在创建模型类后,执行一下代码迁移文件时,在ForeignKey里面不加on_delete=models.CASCADE会报错,加了后,其他又外键的模型类不报错,就这个报错。
class GoodsType(BaseModel):
"""商品类型模型类"""
name = models.CharField(max_length=20, verbose_name="种类名称")
logo = models.CharField(max_length=20, verbose_name="标识")
image = models.ImageField(upload_to="type", verbose_name="商品类型图片")
class Mete:
db_table = "df_goods_type"
verbose_name = "商品种类"
verbose_name_plural = verbose_name
def __str__(self):
return self.name
class GoodsSKU(BaseModel):
"""商品SKU模型类"""
status_choices = (
(0, "下线"),
(1, "上线"),
)
type = models.ForeignKey("GoodsType", on_delete=models.CASCADE, verbose_name="商品种类")
goods = models.ForeignKey("Goods", on_delete=models.CASCADE, verbose_name="商品SPU")
name = models.CharField(max_length=20, verbose_name="商品名称")
desc = models.CharField(max_length=256, verbose_name="商品简介")
price = models.DecimalField(max_digits=10, decimal_places=2, verbose_name="商品价格")
unite = models.CharField(max_length=20, verbose_name="商品单位")
image = models.ImageField(upload_to='goods', verbose_name="商品图片")
stock = models.IntegerField(default=1, verbose_name="商品库存")
sales = models.IntegerField(default=0, verbose_name="商品销量")
status = models.SmallIntegerField(default=1, choices=status_choices,verbose_name="商品状态")
class Meta:
db_table = "df_goods_sku"
verbose_name = "商品"
verbose_name_plural = verbose_name
class GoodImage(models):
"""商品图片模型类"""
sku = models.ForeignKey("GoodsSKU", on_delete=models.CASCADE, verbose_name="商品")
image = models.ImageField(upload_to="good", verbose_name="图片路径")
class Meta:
db_table = "df_goods_image"
verbose_name = "商品图片"
verbose_name_plural = verbose_name
报错
python manage.py makemigrations
Traceback (most recent call last):
File "manage.py", line 21, in <module>
main()
File "manage.py", line 17, in main
execute_from_command_line(sys.argv)
File "/home/u/.virtualenvs/dailyfresh/lib/python3.5/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
utility.execute()
File "/home/u/.virtualenvs/dailyfresh/lib/python3.5/site-packages/django/core/management/__init__.py", line 357, in execute
django.setup()
File "/home/u/.virtualenvs/dailyfresh/lib/python3.5/site-packages/django/__init__.py", line 24, in setup
apps.populate(settings.INSTALLED_APPS)
File "/home/u/.virtualenvs/dailyfresh/lib/python3.5/site-packages/django/apps/registry.py", line 114, in populate
app_config.import_models()
File "/home/u/.virtualenvs/dailyfresh/lib/python3.5/site-packages/django/apps/config.py", line 211, in import_models
self.models_module = import_module(models_module_name)
File "/usr/lib/python3.5/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 986, in _gcd_import
File "<frozen importlib._bootstrap>", line 969, in _find_and_load
File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 673, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 665, in exec_module
File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
File "/home/u/jeth/dailyfresh/apps/goods/models.py", line 56, in <module>
class GoodImage(models):
TypeError: module.__init__() takes at most 2 arguments (3 given)