![](/img/trans.png)
[英]How to get JSON data in django rest framework without tying it to a model
[英]How to initialise model objects explicitly without json data in django rest framework
這是我的模特:客戶
from django.db import models
class Client(models.Model):
client_code = models.CharField(max_length=20, blank=False)
client_name = models.CharField(max_length=50, blank=False)
debit = models.DecimalField(max_digits=19, decimal_places=2)
credit = models.DecimalField(max_digits=19, decimal_places=2)
這是我的views.py中的一種方法
def importClientsFromCSV(request):
if request.method == 'GET':
pathToCSV = os.path.dirname(os.path.abspath(__file__)) + '/portfolio.csv'
with open(pathToCSV, 'rU') as csvfile:
portfolioreader = csv.reader(csvfile, delimiter=',')
printer = "Number of Rows = "
rows = 0
for row in portfolioreader:
try:
client = Client.objects.get(client_code=row[0])
#Client Exists - Update Details
client.debit = row[2]
client.credit = row[3]
serializer = ClientSerializer(client)
if serializer.is_valid():
serializer.save()
rows = rows + 1
except Client.DoesNotExist:
client = Client()
client.client_code=row[0]
client.client_name=row[1]
client.debit=row[2]
client.credit=row[3]
serializer = ClientSerializer(client)
if serializer.is_valid():
serializer.save()
rows = rows + 1
if rows > 0:
return HttpResponse(pathToCSV+", "+printer+str(rows),status=200)
else:
return HttpResponse("Could Not Process",status=404)
問題是我面臨的是無法將我在Except塊中創建的客戶端對象添加到數據庫中。 我不確定為什么我不能序列化此對象並保存它。
要創建一個新對象,您需要創建不帶Client
實例而是使用原始數據的ClientSerializer
。
serializer = ClientSerializer(data=dict_from_row)
if serializer.is_valid():
serializer.save()
(當您要序列化一個對象時傳遞一個實例,或者在您想要更新時傳遞一個實例加數據。)
看看csv.DictReader ,它會為您提供dict_from_row
而無需多費周折。
希望對您有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.