Maj*_*abi 6 django django-models
我建立了一个模型:
class Channel(models.Model):
title = models.CharField(max_length=255, unique=True)
slug = models.SlugField(allow_unicode=True, unique=True)
description = models.TextField(blank=True, default='')
description_html = models.TextField(editable=False, default='',
blank=True)
subscribers = models.ManyToManyField(User,
through="ChannelMembers", on_delete=models.CASCADE,)
Run Code Online (Sandbox Code Playgroud)
当我做 makemigration 它说:
TypeError: __init__() got an unexpected keyword argument 'on_delete'
Run Code Online (Sandbox Code Playgroud)
当删除on_delete 时,它说:
TypeError: __init__() missing 1 required positional argument: 'on_delete'
Run Code Online (Sandbox Code Playgroud)
穿什么?
Joh*_*han 12
on_delete不是 a 上的有效参数ManyToManyField。您需要使用模型on_delete中每个ForeignKey字段中的参数through来ChannelMembers代替。
您可以在Django Docs 网站上查看以下示例,了解如何实现这一点
在您的情况下,它看起来像这样:
class Channel(models.Model):
...
# Don't have the on_delete parameter on this field
subscribers = models.ManyToManyField(User, through="ChannelMembers")
# Add on_delete to both the fields in this class instead
class ChannelMembers(models.Model):
channel = models.ForeignKey(Channel, on_delete=models.CASCADE)
subscriber = models.ForeignKey(User, on_delete=models.CASCADE)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7690 次 |
| 最近记录: |