cari

Rumah  >  Soal Jawab  >  teks badan

python - Django menghadapi masalah mengendalikan pangkalan data dan tidak dapat menanyakan data yang dikemas kini

Saya menukar sifat teks_soalan dan disimpan


Kemudian tambah kaedah __str__() dan tanya semua Soalan sekali lagi,

Kod saya di atas dilaksanakan mengikut ini
http://www.yiibai.com/django/... Saya baru mempelajarinya, dan langkah saya adalah sama seperti tutorial ini, iaitu selepas menambah kaedah __str__() , paparan tutorial yang betul adalah seperti yang ditunjukkan di bawah:

Tetapi saya telah mengujinya sendiri dan memasukkan arahan, tetapi saya tidak dapat melihat rekod selepas saya menukarnya Contohnya, saya menukar
q.question_text = "Ada apa?"
q.save()

.

Selepas menyimpan pengubahsuaian, jalankan arahan berikut
Question.objects.all()
Hasilnya adalah seperti yang ditunjukkan di bawah:

Apakah sebabnya - Django1.9, pangkalan data adalah sqlite3 secara lalai

PHP中文网PHP中文网2736 hari yang lalu907

membalas semua(2)saya akan balas

  • 巴扎黑

    巴扎黑2017-06-30 09:57:15

    . Formatnya salah Jika kaedah ini ditakrifkan di luar kelas, ia menjadi satu fungsi dan tiada kaitan dengan kelas Apabila anda bertanya, objek Soalan akan dikembalikan secara lalai.

    balas
    0
  • typecho

    typecho2017-06-30 09:57:15

    Terima kasih kepada tianren124 atas jawapan, masalah telah selesai.
    Mula-mula anda perlu mengubah suai models.py:
    models.py

    # Create your models here.
    class Question(models.Model):
    
        def __str__(self):
            return self.question_text
        question_text = models.CharField(max_length=200)
        pub_date = models.DateTimeField('date published')
        
    class Chioce(models.Model):
        def __str__(self):
            return self.choice_text
        question = models.ForeignKey(Question, on_delete=models.CASCADE)
        choice_text = models.CharField(max_length=200)
        votes = models.IntegerField(default=0)
        # 每个模型是django.db.models.Model类的子类
       
    #def was_published_recently(self):
            #return self.pub_date >= timezone.now() - datetime.timedelta(days=1)

    Selepas menukar kod model.py di atas, simpannya, buka cmd dan masukkan semula

    C:\Users\Administrator\AppData\Local\Programs\Python\Python35\myproject>python m
    anage.py runserver

    Masuk serentak

    
        C:\Users\Administrator\AppData\Local\Programs\Python\Python35\myproject>python m
    anage.py shell
    Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AM
    D64)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    (InteractiveConsole)
    >>> import django
    >>> django.setup()
    >>> from polls.models import Question, Chioce
    >>> Question.objects.all()
    [<Question: What's up?>, <Question: What's up?>, <Question: What's up?>]
    >>>
    
    

    Anda boleh melihat bahawa, tidak seperti keputusan dalam soalan sebelumnya, apabila Question.objects.all() dimasukkan, hasil yang sedang dijalankan ialah nilai selepas saya menukar q.question_tex "Ada apa?
    Penyelesaian:
    1. Ubah suai model. py

    def __str__(self):
            return self.question_text
        

    hendaklah diletakkan di

    
        question_text = models.CharField(max_length=200)
        pub_date = models.DateTimeField('date published')
    
     def __str__(self):
            return self.choice_text

    Juga letak

    question = models.ForeignKey(Question, on_delete=models.CASCADE)
        choice_text = models.CharField(max_length=200)
        votes = models.IntegerField(default=0)

    Di hadapan saya, saya tidak begitu faham mengapa.
    2. Perhatikan lekukan:

    Ungkapan mungkin tidak begitu jelas, sila betulkan saya

    balas
    0
  • Batalbalas