Django - 如何在views.py中访问实例的值
Posted
技术标签:
【中文标题】Django - 如何在views.py中访问实例的值【英文标题】:Django - How access the value of an instance in views.py 【发布时间】:2021-06-28 02:06:43 【问题描述】:我有这个模型
class Post(models.Model):
title = models.CharField(max_length=100)
title2 = models.CharField( max_length=100)
content = models.TextField(default=timezone.now)
content2 = models.TextField(default=timezone.now)
post_image = models.ImageField(upload_to='post_pics')
post_image2 = models.ImageField(upload_to='post2_pics')
date_posted = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User, on_delete=models.CASCADE)
然后我有了这个简单的视图函数,它允许我在我的 html 中访问它的每个字段:
def home(request):
postings =
'listings' : Post.objects.all(),
return render(request, 'front/front.html', postings)
% for listings in listings%
<h1>listings.content</h1>
% endfor %
有了这个,我可以访问该模型的每个实例的 content
字段并显示它
我的问题是如何访问我的视图函数中的content
字段并进行更改。 content
字段包含一个邮政编码,我想使用 API 来显示该邮政编码所在的城市(我已经知道该怎么做)并将其传递回 h1
标记。每个实例都有一个唯一的邮政编码,所以我需要它来申请每个实例。我该如何处理?
【问题讨论】:
您不应该为迭代变量和被迭代的变量使用相同的名称。试试% for listing in listings%
【参考方案1】:
最简单的方法是创建另一个变量(来自视图),它为相应的邮政编码找到城市,并通过上下文字典将其发送到模板。 或 添加模型城市设置默认值和 Null ,稍后根据输入的密码您可以将值设置为模型的城市属性..
如果要将 CONTENT 的值编辑为城市名称...那么,
最好的方法是覆盖保存方法并在那里设置值,
models.py:
class Post(models.Model):
...
def save(self, *args, **kwargs):
self.content = API_VALUE_OF_city_name
super(Post, self).save(*args, **kwargs)
如果你想从视图中更新它,
在 views.py 中:
instance_update = Post.objects.filter(id = <pk of Post>).update(content = NEWLY FOUND CITY NAME)
【讨论】:
以上是关于Django - 如何在views.py中访问实例的值的主要内容,如果未能解决你的问题,请参考以下文章
如何在 django 中声明一个数据库驱动的字典,该字典可在模板中全局访问,而不依赖于 views.py