我有一个模型联赛,其字段之一是国家/地区代码,它是另一个模型国家/地区的外键
class League(models.Model):
league = models.IntegerField(primary_key=True)
league_name = models.CharField(max_length=200)
country_code = models.ForeignKey("Country",null=True, on_delete=models.SET_NULL)
class Country(models.Model):
country = models.CharField(max_length=60)
code = models.CharField(max_length=15,null=True)
flag = models.URLField(null=True)
lastModified = models.DateTimeField(auto_now=True)
当我尝试创建联赛对象
data_json = leagues_json["api"]["leagues"]
for item in data_json:
league_id = item["league_id"]
league_name = item["name"]
country = item["country"]
b = League.objects.create(league = league_id,league_name = league_name,country_code = country)
我收到错误消息:
ValueError: Cannot assign "'World'": "League.country_code" must be a "Country" instance.
就像我理解的那样,发生错误是因为在创建对象时,我没有分配给country_code
字段固有的Country
对象。
如何做到?
答案 0 :(得分:0)
您可以尝试先获取Country
对象,然后使用它来创建League
。
也许是这样的(假设item["country"]
拥有国家代码):
for item in data_json:
country = Country.objects.get(code=item["country"])
b = League.objects.create(
league=item["league_id"],
league_name=item["name"],
country_code=country)
请注意此代码: