gpt4 book ai didi

python - 更改 Django 默认模型设置

转载 作者:太空宇宙 更新时间:2023-11-03 11:16:32 24 4
gpt4 key购买 nike

我只是从 Django 创建您自己的应用程序教程(创建投票)开始我有点偏离,因为我想使用我自己的已经存在的数据库模型创建一个应用程序。

在教程中它说

  • 表名是自动的通过组合名称生成应用程序(投票)和小写字母模型的名称——投票和选择。(您可以覆盖此行为。)
  • 添加了主键(ID)自动地。 (你可以覆盖这也是。)
  • 按照惯例,Django 会附加“_id”到外键字段姓名。是的,你可以覆盖这个,

但我看不到它在哪里提到如何覆盖此行为?我已经这样定义了我的模型

from django.db import models

# Create your models here.
class Channels(models.Model):
channelid = models.IntegerField()
channelid.primary_key = True
channelname = models.CharField(max_length=50)

现在,当我进入 shell 时,这就是我得到的

>>> from tvlistings.models import *
>>> Channels.objects.all()
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "C:\Python26\lib\site-packages\django\db\models\query.py", line 67, in __
repr__
data = list(self[:REPR_OUTPUT_SIZE + 1])
File "C:\Python26\lib\site-packages\django\db\models\query.py", line 82, in __
len__
self._result_cache.extend(list(self._iter))
File "C:\Python26\lib\site-packages\django\db\models\query.py", line 271, in i
terator
for row in compiler.results_iter():
File "C:\Python26\lib\site-packages\django\db\models\sql\compiler.py", line 67
7, in results_iter
for rows in self.execute_sql(MULTI):
File "C:\Python26\lib\site-packages\django\db\models\sql\compiler.py", line 73
2, in execute_sql
cursor.execute(sql, params)
File "C:\Python26\lib\site-packages\django\db\backends\util.py", line 15, in e
xecute
return self.cursor.execute(sql, params)
File "C:\Python26\lib\site-packages\django\db\backends\mysql\base.py", line 86
, in execute
return self.cursor.execute(query, args)
File "C:\Python26\lib\site-packages\MySQLdb\cursors.py", line 166, in execute
self.errorhandler(self, exc, value)
File "C:\Python26\lib\site-packages\MySQLdb\connections.py", line 35, in defau
lterrorhandler
raise errorclass, errorvalue
DatabaseError: (1146, "Table 'tvlistings.tvlistings_channels' doesn't exist")

显然它找不到表 tvlistings_channels,因为它实际上称为 channel 。那么我该如何更改默认值呢?

最佳答案

您可以在很大程度上通过使用 inner Meta class 来覆盖 Django 中的模型行为。

  • > db_table允许您重命名表名
  • 将另一个字段指定为主键将使其使用该字段而不是代理键(不在 Meta 类中,仅在模型本身中)

关于python - 更改 Django 默认模型设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4659229/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com