【发布时间】:2020-11-22 13:27:42
【问题描述】:
看着:
https://docs.djangoproject.com/en/3.1/ref/models/instances/#django.db.models.Model.save
为方便起见,每个模型默认都有一个名为 id 的 AutoField 除非您在您的字段中明确指定 primary_key=True 模型。有关详细信息,请参阅 AutoField 的文档。
和
https://docs.djangoproject.com/en/3.1/topics/db/models/
似乎很清楚,一个对象总是有一个 id。我有一个模型:
class Currency(models.Model):
currency_name = models.CharField(max_length=100)
currency_value_in_dollars = models.FloatField()
currency_value_in_dollars_date = models.DateField()
def __str__(self):
return self.currency_name
我已迁移为:
operations = [
migrations.CreateModel(
name='Currency',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('currency_name', models.CharField(max_length=100)),
('currency_value_in_dollars', models.FloatField()),
('currency_value_in_dollars_date', models.DateField()),
],
),
当尝试向数据库添加条目时:
def update_coins_table():
if not do_greeting():
print("Gecko crypto board not reachable. Db setup")
return
crypto_coins_prices = cg.get_price(ids=coins_ids_str, vs_currencies='usd')
timezone_now = timezone.now()
for coin_key in crypto_coins_prices:
coin = Currency(coin_key, crypto_coins_prices[coin_key]['usd'], timezone_now)
coin.save()
行:
coin = Currency(coin_key, crypto_coins_prices[coin_key]['usd'], timezone_now)
给予:
unable to get repr for <class 'manage_crypto_currency.models.Transaction'>
和
coin.save()
失败。如果我将有问题的行替换为:
coin = Currency(1, coin_key, crypto_coins_prices[coin_key]['usd'], timezone_now)
它有效。 id 不应该自动递增吗?
最后一行总是覆盖前一行,最后只存储一个条目。
【问题讨论】:
标签: python python-3.x django