微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

不能分配“1”:“Plugins.category”必须是“PluginsCategory”实例 Django 和外键

如何解决不能分配“1”:“Plugins.category”必须是“PluginsCategory”实例 Django 和外键

我正在尝试将新记录保存到数据库中,但写入外键时出错

不能分配“1”:“Plugins.category”必须是“PluginsCategory”实例。

怎么了?

models.py

class Plugins(models.Model):
    title = models.CharField(max_length=150,verbose_name='Название')
    category = models.ForeignKey('PluginsCategory',on_delete=models.PROTECT,related_name='get_category')

    def get_absolute_url(self):
        return reverse('urls_view_current_plugins',kwargs={'pk': self.pk})

    def __str__(self):
        return self.title


class PluginsCategory(models.Model):
    title = models.CharField(max_length=150,db_index=True,verbose_name='Наименования категории')

    def __str__(self):
        return self.title

tags.py

def add_plugin_in_db():
    plugin = Plugins()
    plugin.title = 'title'
    plugin.category = 1
    plugin.save(force_insert=True)

在网站上

C:\PythonProject\ServiceCRM3\venv\lib\site-packages\django\db\models\fields\related_descriptors.py,line 215,in __set__
            raise ValueError( …
▼ Local vars
Variable    Value
instance    
<Plugins: Заказы>
self    
<django.db.models.fields.related_descriptors.ForwardManyToOneDescriptor object at 0x000000000438DAF0>
value   
1

解决方法

您使用 category_id 字段分配它,因此:

ef add_plugin_in_db():
    plugin = Plugins()
    plugin.title = 'title'
    plugin.category_id = 1
    plugin.save(force_insert=True)

然而,您可以将其变得更紧凑:

def add_plugin_in_db():
    plugin = Plugins.objects.create(
        title = 'title'
        category_id=1
    )

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。