Python - Django はデータベースの操作中に問題が発生し、更新されたデータをクエリできませんでした
PHP中文网
PHP中文网 2017-06-30 09:55:15
0
2
783

question_text のプロパティを変更して保存しました


次に、__str__() メソッドを追加し、すべての質問を再度クエリします。

私の上記のコードは、この

http://www.yiibai.com/django/... に従って実装されています。私はちょうどそれを学びました。私の手順は、このチュートリアルと同じで、__str__ () を追加することです。メソッドを使用すると、チュートリアルの正しい表示は次のようになります:

しかし、自分でテストしてコマンドを入力しましたが、変更後のレコードは表示されませんでした。たとえば、

q.question_text = "What's up?"
q.save( )

変更を保存した後、次のコマンドを実行します

Question.objects.all()
結果は以下のようになります:

この理由は? —Django1.9、データベースはデフォルトの sqlite3
です

PHP中文网
PHP中文网

认证高级PHP讲师

全員に返信(2)
typecho

感谢tianren124的解答,问题得到了解决。
首先需要修改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)

更改好上面的model.py代码后保存,打开cmd,重新输入

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

同时输入


    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?>]
>>>

可以看到,不同于之前问题中的结果,当输入Question.objects.all()后,运行结果是我更改q.question_tex后的值 “What's up?
解决:
1.修改models.py

def __str__(self):
        return self.question_text
    

应该放在


    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')
 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)

的前面,至于为什么我自己也不太明白。
2.注意缩进:

表述的可能不是很清楚,欢迎指正

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!