python - Django menghadapi masalah mengendalikan pangkalan data dan tidak dapat menanyakan data yang dikemas kini
PHP中文网
PHP中文网 2017-06-30 09:55:15
0
2
905

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中文网

认证高级PHP讲师

membalas semua(2)
巴扎黑

. 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.

typecho

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

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan