在 django 中的模型中獲取屬性錯誤。當我嘗試在我的模型串列模板中呼叫 model.get_absolute_url 時,它說模型在模型中沒有屬性“id”,我還正確撰寫了 url 映射器和視圖函式,包括例外指向的細節模板到這條反向線這是models.py檔案中的模型
class Post(models.Model):
title=models.CharField(max_length=200,help_text="Write your title",primary_key=True)
caption=models.TextField(help_text="Write something")
image=models.FileField(blank=True)
post_date=models.DateField(auto_now=True)
class Meta:
ordering=['post_date']
def __str__(self):
return self.title
def __str__(self):
return self.caption
def get_absolute_url(self):
return reverse('post-detail', args=[str(self.id)])
#here is the url path
urlpatterns =[
path('posts',views.PostListView.as_view(),name="post-list"),
path('post/<int:pk>',views.PostDetailView.as_view(),name="post-detail")
]
uj5u.com熱心網友回復:
擴展 Willem Van Onsem 的評論,從您上次的評論中重寫模型,
class Post(models.Model):
title=models.CharField(max_length=200,help_text="Write your title")
caption=models.TextField(help_text="Write something")
image=models.FileField(blank=True)
post_date=models.DateField(auto_now=True)
class Meta:
ordering=['post_date']
def __str__(self):
return self.title
def __str__(self):
return self.caption
def get_absolute_url(self):
return reverse('post-detail', args=[str(self.id)])
#here is the url path
urlpatterns =[
path('posts',views.PostListView.as_view(),name="post-list"),
path('post/<int:pk>',views.PostDetailView.as_view(),name="post-detail")
]
現在來處理執行此操作后出現的錯誤。如果您正在開發中并且您的資料庫中沒有需要保留的資料,您可以洗掉并重新創建整個資料庫并重新運行命令:
python manage.py makemigrations
python manage.py migrate
或者,
python manage.py flush
來源:https ://docs.djangoproject.com/en/4.0/ref/django-admin/#flush
但請注意,這將洗掉資料庫中的所有資料。如果您需要保留資料,請在此處查看S. 接受的答案:
將您的資料卸載到 JSON 檔案中。為此,請使用 Django 自己的內部 django-admin.py 工具。您應該為每個將要更改的檔案和依賴于正在創建的鍵的每個表創建一個卸載檔案。單獨的檔案使這更容易做到。
洗掉要從舊模式中更改的表。
依賴于這些表的表將更改其 FK;您可以就地更新這些行,或者——它可能更簡單——也可以洗掉并重新插入這些行。
創建新架構。這只會創建正在更改的表。
撰寫腳本以使用新密鑰讀取和重新加載資料。這些都很短而且非常相似。每個腳本都會使用 json.load() 從源檔案中讀取物件;然后,您將從為您構建的 JSON 元組行物件創建架構物件。然后,您可以將它們插入資料庫。
你有兩個案例。
更改 PK 的表將被插入并獲得新的 PK。這些必須“級聯”到其他表,以確保其他表的 FK 也被更改。
FK 發生變化的表必須在外部表中定位行并更新其 FK 參考。
選擇。
重命名所有舊表。
創建整個新架構。
撰寫 SQL 將所有資料從舊模式遷移到新模式。這將不得不巧妙地重新分配密鑰。
洗掉重命名的舊表。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/412665.html
標籤:
上一篇:AttributeError:嘗試獲取序列化程式“RegisterSerializer”上欄位“password2”的值時出現AttributeError
