问题描述
我正在尝试将新记录保存到数据库中,但写入外键时出错
不能分配“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
)