2017-09-06 16 views
1

我想解析excel &製作字典並連接具有相同user_id字典的模型(用戶)。 現在字典是views.py如何連接字典的user_id和模型的user_id?

dict_data = {'user_id': 1,'nationarity': America, 'dormitory':'A', 'group': 3} 

模型是

user = User(user_id=rows[1],name_id=rows[2],age=rows[3],employee=rows[4]) 

如果我想添加字典的數據模型,我應該寫這樣

for data in dict_data: 
    User(**data) 

但我要如何連接字典的user_id & models'one?我應該寫什麼?

現在我寫的像

#coding:utf-8 
from django.shortcuts import render 
import xlrd 
from app.models import User 
book3 = xlrd.open_workbook('./data/XXX.xlsx') 
sheet3 = book3.sheet_by_index(0) 
headers = sheet3.row_values(0) 

large_item = None 
dicts = {} 
for row_index in range(sheet3.nrows): 
    rows3 = sheet3.row_values(row_index) 
    large_item = rows3[1] or large_item 

    # Create dict with headers and row values 
    row_data = {} 
    for idx_col, value in enumerate(rows3): 
     header_value = headers[idx_col] 
     # Avoid to add empty column. A column in your example 
     if header_value: 
      row_data[headers[idx_col]] = value 
      # Add row_data to your data_dict with 
    dicts[row_index] = row_data 
    for data in dicts: 
     user1 = User.objects.filer(user_id = data['user_id']).exists() 
     if user1: 
      user1.__dict__.update(**dicts) 
      user1.save() 

當我運行這段代碼,

AttributeError: 'Manager' object has no attribute 'filer' 
user1 = User.objects.filer(user_id = data['user_id']).exists() 

我應該如何解決這個問題?

回答

1
for data in dict_datas:   
    user = User.object.filter(user_id = data['user_id']).exists() 
    if user: 
     user.__dict__.update(**dict_data) 
     user.save() 
+0

我寫了你的代碼,但錯誤發生。我更新了我的問題,如果你知道的東西,請幫助我。 – user8563636

+0

「文件管理器」應該是「過濾器」 – Robert

1

更新:filter,not filer。 另一個拼寫錯誤,你不是英語演講者嗎?

dict_data你發佈的是字典,你不應該像列表一樣迭代它。 我猜你的dict_data是字典的列表,以便:

for data in dict_datas: 
    user = User.objects.get(user_id=data['user_id']) 
    user.name_id = data['**'] 
    ... 
    user.save() 

首先,取得與user_id用戶對象在xecel &字典,然後更改值,並將其保存。