我创建了一个对象,我试图在myapp中的Django管理员中保存> Hello。但是这个对象并没有在' Hello'当我运行服务器时。我该如何解决?我还在admin.py中注册了我的模型。
models.py:
from django.db import models
from django.contrib.auth.models import User
class Foo(models.Model):
foo_id = models.CharField(max_length=10)
class Hello(models.Model):
user = models.ForeignKey(User, models.DO_NOTHING)
foo_id = models.ForeignKey('Foo', models.DO_NOTHING, db_column='foo_id')
foo_text = models.CharField(max_length=500, default="Hello!")
views.py
from django.shortcuts import render,HttpResponse,redirect
from django.shortcuts import render
from django.contrib.auth.decorators import login_required
from .models import User,Foo, Hello
from django.contrib.auth import settings
@login_required
def home(request):
return render(request, 'index.html')
@login_required
def sendhello() :
Foos=Foo.objects.all()
for foo in foos:
#Hello(user=user, foo_text='hello there', foo_id=foo).save()
xyz, obj=Hello.objects.get_or_create(user=user, foo_text='hello there', foo_id=foo)
if xyz is True:
obj.save()
@login_required
def helloxyz(request):
user = User.objects.get(id=request.session['id'])
hellos=Hello.objects.filter(user_id=user)
print(hellos)
hellos_list=[]
for hello in hellos:
print(hello.hello_text)
hellos_list.append(hello.hello_text)
hellos_list.reverse()
print(hellos_list)
return render(request,'index.html',{'hellos': hellos_list,})
答案 0 :(得分:1)
首先,您的utilis.py
功能不是视图,因此在您查看网站时不会调用它。我现在只是假设您有一个JS登录对话框,或者您可以从中获取输入。因此,您希望从数据库中存在(?)的这些输入生成数据库条目。你可以通过简单地在视图类或函数中调用生成函数(我建议将这些非视图辅助函数放在一个单独的文件中并在视图中导入它们)或者在视图之外调用你的生成函数。 django cron。
最简单的方法是创建一个新文件import myapp.utils
,然后使用export function doSomething<T>(Class: T & ImportedType): Extended<T> {
let name = Class.name;
let extended: any = Class;
extended.foo = function _for(value) {
// do stuff
};
return extended;
}
将其导入到您的视图中,然后在您的网站视图顶部调用您的函数。
为什么选择sperate文件?它只是为了更好的可读性,当其他人查看您的代码并交换帮助程序时更简洁。
如果您经常发生的任务最好与加载特定页面的用户无关,请查看django_crontab模块,这非常方便。你需要在Linux系统上。
我希望能回答你的问题