問題:在mysql中查詢數據時,代碼如下:
1 skus = category.sku_set.filter(is_launched=True).order_by(sort_field)
skus 取不到數據,提示 skus: Unable to get repr for <class 'django.db.models.query.QuerySet'>
解決:
多方查找,是因為,原模型類中的
1 default_image_url = models.CharField(max_length=200, default='', null=True, blank=True, verbose_name='默認圖片')
遷移到數據庫中變成了default_image,此時如果把模型類中的default_image_url改成default_image,還會報錯 'str' object has no attribute 'url'
最終改成
1 default_image = models.ImageField(max_length=200, default='', null=True, blank=True, verbose_name='默認圖片')
解決問題!
總結:
1 目前所知只有模型類中的外鍵字段,mysql里會加上 _id,其余字段都是一一對應,不會改變的
2 ImageField 是用於保存圖像文件的字段,有url這個屬性,而CharField 沒有url 這個屬性
3 網上遇到這個問題的人很多,大部分解決辦法有兩個方向
1)因為__str__方法返回的有日期,需要轉成str
2)遷移模型類出錯,我遇到的錯誤屬於這個范疇