我想将所有模型字段写入一个文本文件,但我得到:我该如何解决这个问题? 我正在制作患者注册表,注册后我想查看文本文件中的所有模型字段。代码有效,我得到一个文本文件,但我看到的不是预期值,而是一个延迟属性。我的错在哪里?
这是我的模型.py
from django.db import models
from django.contrib.auth.models import User
from django.urls import reverse
class Post(models.Model):
soru1 = models.CharField(verbose_name='Ad Soyad',max_length=10000, default="")
soru2 = models.CharField(verbose_name='Tarih', max_length=10000, default="")
soru3 = models.CharField(verbose_name='Doğum Tarihi', max_length=10000, default="")
soru4 = models.CharField(verbose_name='Doğum Yeri', max_length=10000, default="")
soru5 = models.CharField(verbose_name='Medeni Hali', max_length=10000, default="")
这是我的views.py:
from django.shortcuts import render
from django.views.generic import ListView, DetailView, CreateView, UpdateView, DeleteView
from .models import Post
from .forms import PostForm
from django.urls import reverse_lazy
from django.db.models import Q
from django.http import HttpResponse
from django.core.files import File
#Dosya Kaydetme
def writetofile(request):
f = open('/Users/emr/Desktop/ngsaglik/homeo/patient/templates/kayitlar/test.txt', 'w')
textfile = File(f)
kayitlar = Post.objects.all()
lines = []
for kayit in kayitlar:
lines.append(f'{Post.soru1}')
textfile.write(str(lines))
textfile.close
f.close
return HttpResponse()
结果如下:
['<django.db.models.query_utils.DeferredAttribute object at 0x1069ce0d0>', '<django.db.models.query_utils.DeferredAttribute object at 0x1069ce0d0>']
最佳答案
您必须将 Post.soru1
更改为 kayit.soru1
。这是因为 Post
是对类的调用,而不是在这种情况下您想要获取的实例,这就是为什么它只显示模型字段而不是实例的值。
kayitlar = Post.objects.all()
在这里,您将 Post
模型的所有现有实例分配给变量 kayitlar
。现在您可以忘记 Post
并进一步处理包含所有对象的 kayitlar
变量。
关于django - 获取 <django.db.models.query_utils.DeferredAttribute object at 0x1069ce0d0> 而不是值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71102536/