[英]Matching django table foreign keys with filter function
我正在嘗試將CSV上傳到Django表中。 我無法將數據與外鍵匹配。 “ cpt”是從價格到服務模式的外鍵。 有許多價格行映射到一個cpt行,但是每一行只有一個cpt。
這是我的上傳代碼。
path = "/Users/joannerodrigues/Documents/csv_import/"
os.chdir(path)
from catalog.models import Service, Price
with open('price.csv') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
p = Price(com_desc=row['com_desc'],
service=Service.objects.filter(cpt=str(row['cpt']))[0])
p.save()
這是我得到的錯誤:
site-packages/django/db/models/query.py", line 303, in __getitem__
return qs._result_cache[0]
IndexError: list index out of range
數據看起來像這樣:價格數據:(csv文件中包含的標題)
com_des, cpt
"desc 1", '57647'
"desc 2", '87654'
服務數據:(文件中包含標題)
desc_us, cpt, price
"desc1....", '57647', '89.95'
"dsc2.....", '87654', '875.87'
這是models.py價格
class Price(models.Model):
com_desc = models.CharField(max_length = 200, blank = True, null = True)
service = models.ForeignKey("Service", on_delete=models.SET_NULL, null=True)
服務
class Service(models.Model):
desc_us = models.TextField(blank=True, primary_key = True)
cpt = models.IntegerField(default= 10000)
您的Service.cpt
是一個整數字段,因此它永遠不會與字符串匹配。 您應該將row['cpt']
轉換為整數,而不是進行過濾:
service=Service.objects.filter(cpt=int(row['cpt']))[0])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.