Django数据库sqlite显示属性值

时间:2016-04-23 19:39:10

标签: python django sqlite

我正在使用django的项目,我写了我的models.py

我有两个班级

class Adresse(models.Model):
    numV=models.IntegerField(blank=False,null=False)
    complementdest=models.TextField(blank=False,null=False)
    complementadr=models.TextField(blank=False,null=False)
    commune=models.TextField(blank=False,null=False)
    codeP=models.IntegerField(blank=False,null=False)
    pays=models.TextField(blank=False,null=False)
    def __str__(self):
        return self.numV
        return self.complementdest
        return self.complementadr
        return self.commune
        return self.codeP
        return self.pays
    def __Adr__(self):
        return self.adr1.all()

class CompteCandidat(myUser):
    sexe = models.TextField(max_length=10)
    datecr = models.DateTimeField(auto_now_add = True)
    adresse=models.OneToOneField('Adresse',related_name='adr1',null=True, default=None)
    def __str__(self):
        return self.first_name
        return self.last_name
        return self.email
        return self.sexe
    def __Adr__(self):
        return self.adresse.all()

我尝试做这样的测试:

  
    
      

adresse = Adresse(numV =' 254',compledest =' xxxxx',compleadr =' Eugene拿破仑',commune =' Paris' ;,CODEP =' 75012',支付='法国&#39)

             

C1 = CompteCandidat(用户名='露娜',如first_name ='西莉亚',姓氏='杜兰德',密码=' CCC' ,电子邮件=' hello2@gmail.com',类型=' candidat',住址=住址)       adresse.save()       c1.save()

    
  

当我尝试通过使用此命令查看我的Adresse或CompteCandidat中的内容时,它无法正常工作

>>> Adresse.__getattribute__(numV)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
NameError: name 'numV' is not defined

我想知道我想在Adresse和CompteCandidat中展示我的内容,以确保添加有效

我知道我能做到:

>>> adresse.numV
'254'

但是它只能在控制台中使用另一种方法来查询所有数据库而不使用临时变量的名称????

3 个答案:

答案 0 :(得分:0)

你可以使用 public void save_image() { Graphics2D g; g = (Graphics2D) bf1.getGraphics(); g.drawImage(bf2, captureRect.x, captureRect.y, captureRect.width, captureRect.height, null); g.dispose(); //i draw the crypted pixels on my original image and create new image File outputFile = new File("C:/USERS/HP/DesKtop/output.jpg"); try { ImageIO.write(bf1, "jpg", outputFile); } catch (IOException ex) { Logger.getLogger(MenuGenerale2.class.getName()).log(Level.SEVERE, null, ex); } }  查看所有记录或Adresse.objects.all()  看到满足这种条件的记录。 如需完整参考,请检查: https://docs.djangoproject.com/ja/1.9/topics/db/queries/

答案 1 :(得分:0)

首先在控制台中试试这个:

>>>A = {numV='254',complementdest='xxxxx',complementadr='Eugene napoleon',commune='Paris',codeP='75012',pays='France'}
>>> adresse = Adresse(**A)
>>> adresse.save()

首先您将面临错误,因为numVInteger,但您正在为其分配String,因此应将numV = '254'修改为numV = 254在第一行。

然后再次尝试上面的步骤,并在哪个步骤面临错误。

答案 2 :(得分:0)

两件事:

  1. __str__必须只返回一个字符串 - 因为它代表您尝试返回多个非字符串值。

  2. __getattribute__方法(以及它的对应getattr)应该传递属性的名称,即字符串。除非在特殊情况下,你也不应该试图直接致电__getattribute__:即。你有某种形式的循环访问 - 你不会在这里。

  3. 没有理由adresse.numV不能直接在您的代码中工作 - 这是从实例中检索属性的常规方法。如果您在其他地方的字符串中有属性名称,则只应使用getattr

    冒着听起来粗鲁的风险 - 如果你正在努力编写能够正确访问属性的代码,那么尝试编写Django应用程序就是在你走之前尝试运行的情况。