【问题标题】:AttributeError 'Client' object has no attribute 'get'AttributeError 'Client' 对象没有属性 'get'
【发布时间】:2019-10-24 16:11:29
【问题描述】:

我有一个很可能很傻但我无法解决的问题,执行视图功能后出现属性错误

在我的 Django 应用程序的 degu 模式下,我得到:

AttributeError
Exception Value:    
'Client' object has no attribute 'get' 
(...)
Error during template rendering
In template (...)Comptabo/templates/base.html, error at line 0

当我点击索引页面中的客户姓名时。我已经尝试了很多东西并查看了相应的主题以及文档,我不明白错误来自哪里。这不是与模板或urls文件有关的问题..如果有人有想法

views.py 中我的客户端函数:

def client(request, id = 0):
    if id:  
        client = Client.objects.get(id = id)
        form = ClientForm(client)
        factures = Facture.objects.filter(client = client)
        devis = Devis.objects.filter(client = client)
        form_fact = FactureForm()
        form_dev = DevisForm()
        return render(request,'client.html',{'client' : client
          , 'form' : form, 'factures': factures, 'devis': devis
          , 'formf': form_fact,'formd': form_dev})
    else:
        return redirect('/index')

models.py 中我的班级客户:

class Client(models.Model):
    nom = models.CharField(max_length = 30)
    adresse_voie = models.CharField(max_length = 30)
    adresse_code = models.IntegerField()
    adresse_ville = models.CharField(max_length = 30)
    adresse_pays = models.CharField(max_length = 30, default = "France")
    tel = models.CharField(max_length = 12)
    fax = models.CharField(max_length = 12, blank = True)
    mail = models.EmailField()
    def __str__(self):
        return self.nom

最糟糕的是函数Client.objects.get(id = id) 可以工作,因为在局部变量中我的客户端变量包含请求的对象:

client = Client: ICE
devis = QuerySet []
factures = QuerySet []
form = ClientForm bound=True, valid=True, fields=(nom;adresse_voie;
       adresse_code;adresse_ville;adresse_pays;tel;fax;mail)
form_dev = DevisForm bound=False, valid=Unknown, fields=(prestations;total_HT;date)
form_fact = FactureForm bound=False, valid=Unknown, fields=(prestations;total_HT;paye;date)
id = 1
request = WSGIRequest: GET '/client/1/'

【问题讨论】:

    标签: python django model


    【解决方案1】:

    您应该已经发布了完整的回溯,这样我们就可以看到错误的来源。但是这行显然是错误的:

    form = ClientForm(client)
    

    表单的第一个位置参数是发布数据。您可能的意思是

    form = ClientForm(instance=client)
    

    【讨论】:

    • 谢谢丹尼尔,它可以工作...我有一个使用 python 的项目,但我从未见过这个错误,现在我知道如何修复它以及如何正确填写表格。再次感谢你!!你拯救了我的一天!
    • 但我不明白为什么指示错误出现在 Client 对象的 get 属性上
    • 因为你已经传递了那个对象来代替数据字典;所以表单通常会执行request.POST.get('fieldname'),现在它正在有效地尝试执行client.get('fieldname'),因此出现错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-08
    • 2021-02-24
    • 2018-05-09
    • 2020-11-27
    • 2018-09-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多