繁体   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