簡體   English   中英

如何過濾django Views.py中與外鍵model相關的對象

[英]How to filter the objects related to foreign key model in django Views.py

我有這樣的models.py:

class Subject(models.Model):
    sub = models.CharField(max_length=200)

    slug = models.SlugField(unique=True)
    created_on = models.DateTimeField(auto_now_add=True)

class Post(models.Model):
    sub = models.ForeignKey(Subject, on_delete=models.CASCADE)
    file_name = models.CharField(max_length=50,blank=True)
    url = models.CharField(max_length=800, unique=True)

網址.py

 path('view/<subj>/', views.PostDetail, name='post_detail'),

視圖.py

def PostDetail(request, subj):
    content = Post.objects.get(sub=subj)

但是當我從 url 將 subj 作為 sig 傳遞時出現此錯誤,

invalid literal for int() with base 10: 'sig'

如何在 Post model 中獲取與查詢主題相關的所有對象,即“子”?

如果您期望不止一個 object (查詢集),請使用filter()

def PostDetail(request, subj):
    content = Post.objects.filter(sub__sub=subj)

基數為 10 的 int() 的無效文字:'sig' :因為在您的get()方法中, sub期望某種id (整數)。 但是,你已經通過了string 因此,通過轉到Subject model 中的特定字段並使用underscore(__)指向sub ,您應該得到您所期望的。

使用下划線查找

在你的urls.py中給出 subj 類型,如果 subj 是 String 添加<str:***>

path('view/<str:subj>/', views.PostDetail, name='post_detail'),

視圖.py:

def PostDetail(request, subj):
    content = Post.objects.filter(sub__sub=subj)

使用過濾器搜索 Post.sub,因為 sub 是 ForeignKey,所以使用 sub__sub。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM