python - 在model.method工作后更改views.py中的变量 - Django
问题描述
每个人。
我在views.py 中有一个全局变量:它是投票的用户列表。
在我的作者被删除后,我想清空该列表。
我在 models.py 中有一个 Author.delete 方法,我可以用它来清空它,但我无法将列表导入到 models.py
视图.py
voted_list=[]
模型.py
class Author(models.Model):
def delete(self, *args, **kwargs):
Option.objects.filter(author_id=self.id).update(author_id=None, votes=0)
super().delete(*args, **kwargs)
或者我可以将我的“删除”方法导入视图,例如:
视图.py
if Author.delete():
voted_list=[]
编辑 我需要更清楚我的问题。我在视图中有一个方法:def
vote(request, author_id):
global voted_list
author = get_object_or_404(Author, pk=author_id)
a= LogEntry.objects.log_action(
user_id = request.user.pk,
content_type_id = ContentType.objects.get_for_model(Option).pk,
object_id = Option.pk,
object_repr = force_text(Option),
action_flag = CHANGE
)
print("Voted:",a.user_id)
voted_list.append(User.objects.get(pk=a.user_id))
我只想传递给投票的 user_id 的模板列表。但是在删除 Author 后将其清空。我不想使用数据库更改,因为在我目前的状态下,我认为我已经使它们过于复杂了
谢谢你。
解决方案
首先,请注意,使用全局变量是一种不好的做法。
在我看来,您的代码看起来有点奇怪:当您删除一个Author
(我假设哪个对象是Option
? 的外键)时,它会自动将 this 的值设置ForeignKeyField
为None
. 因此,手动设置author_id=None
感觉不对(就像您在做一些不需要的事情)。
与什么voted_list
有关?
我的建议是为每个需要知道谁投票的类设置(是Option
吗?),一个ManyToManyField
被调用的authors_who_voted_for
(例如),并手动添加任何Author
实际投票给所述对象的实例。这样,如果Author
要删除一个,它将自动从authors_who_voted_for
. 这对您来说不是更好的解决方案吗?
推荐阅读
- jmeter - JMeter ForEach 控制器覆盖输出变量名称?
- reactjs - 在使用 syncErrors 之前等待 redux-form 完成
- r - 根据另一个数据框中的 2 个变量删除数据框中的行
- ruby - 一种有效的组合成对组合而不重复的方法?
- python - 遍历元组并将索引值与列表中的项目进行比较
- php - Codeigniter 更新数据库中的数据
- javascript - 如何将参数传递给 addEventListener 的回调函数
- ios - 接受/拒绝 EKEvent 邀请
- powershell - 无法从 Exchange cmdlet 捕获/重定向警告
- docker-compose - 如何在 ecs-cli 上运行 docker compose 时修复“无法解组 !!str `image:j...` into config.RawService”错误?