我的代碼有問題。我的朋友幫助我用 JavaScript 撰寫了一些代碼,但要完成這部分代碼,他必須添加一個帶有“db_column”選項的欄位。在他完成之后,當我運行測驗時,我有一個錯誤:“重復的列名:ID”。現在我的朋友不能再幫助我了,我找不到解決辦法...
這是models.py:
class Item(models.Model):
name = models.CharField(max_length=50)
type = models.CharField(max_length=50, validators=[RegexValidator('helmet|torso|pants|gauntlets|weapon|accessory')])
bonus = models.ForeignKey(Statistics, on_delete=models.CASCADE)
durability = models.IntegerField()
image = models.ImageField(upload_to='DeepDungeon/static/images/items')
itemId = models.IntegerField(db_column='ID')
這是錯誤:
Creating test database for alias 'default'...
Traceback (most recent call last):
File "/Users/manuel/Programmazione/PyCharm/DeepDungeon/venv/lib/python3.8/site-packages/django/db/backends/utils.py", line 82, in _execute
return self.cursor.execute(sql)
File "/Users/manuel/Programmazione/PyCharm/DeepDungeon/venv/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py", line 421, in execute
return Database.Cursor.execute(self, query)
sqlite3.OperationalError: duplicate column name: ID
uj5u.com熱心網友回復:
在幕后,django 會自動添加一個 ID 欄位,它是模型的主鍵,因此添加db_column="ID"itemId 會與 Item 模型的主鍵發生沖突。您可以通過 2 種方式解決此問題:
class Item(models.Model):
name = models.CharField(max_length=50)
type = models.CharField(max_length=50, validators=[RegexValidator('helmet|torso|pants|gauntlets|weapon|accessory')])
bonus = models.ForeignKey(Statistics, on_delete=models.CASCADE)
durability = models.IntegerField()
image = models.ImageField(upload_to='DeepDungeon/static/images/items')
# add primary key on the itemId if you know that this always will be unique
itemId = models.IntegerField(db_column='ID', primary_key=True)
# OR, define a new primary key
pk = models.AutoField(primary_key=True)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/454985.html
標籤:Python django 数据库 django模型 django 测试
下一篇:鏈接表還需要關系嗎?
