【问题标题】:Django - How access the value of an instance in views.pyDjango - 如何在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%}

标签: python django database django-models django-templates


【解决方案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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多