我有一个申请档案员型号.py像这样:
from django.db import models
from django.contrib.auth.models import User
from fileman.fields import AutoForeignKey
from django.utils.translation import ugettext as _
class Setting(models.Model):
owner = AutoForeignKey(User, unique=True, related_name='fileman_Setting')
root = models.CharField(max_length=250, null=True)
home = models.CharField(max_length=250, null=True)
buffer = models.TextField(blank=True)
class Meta:
permissions = (
("can_fm_list", _("Can look files list")),
("can_fm_add", _("Can upload files")),
("can_fm_rename", _("Can rename files")),
("can_fm_del", _("Can move files to basket")),
("can_fm_destruct", _("Can delete files")),
)
def __unicode__(self):
return unicode(self.owner)
def __init__(self, *args, **kwargs):
super(Setting, self).__init__(*args, **kwargs)
if not self.root:
self.root = None
self.home = None
def writeBuffer(self, data):
self.buffer = data
self.save()
我想在用户注册时为他分配root、home和权限:这是我在userprofile中拥有的/视图.py你知道吗
from fileman.models import Setting
def register(request):
if request.method == 'POST':
form = RegistrationForm(request.POST)
if form.is_valid():
username = form.cleaned_data.get('username')
password = form.cleaned_data.get('password1')
newuser = User.objects.create_user(username=username, email='', password=password)
if form.cleaned_data.get('email'):
newuser.email = form.cleaned_data.get('email')
EmailValidation.objects.add(user=newuser, email=newuser.email)
newuser.save()
# Fileman Settings
newuser.fileman_Setting.owner = newuser
newuser.fileman_Setting.root = '/home/aton2/ajunkkil/Django/basedraft/uploads'
print(newuser.fileman_Setting.root)
newuser.fileman_Setting.home = '/home/aton2/ajunkkil/Django/basedraft/uploads/useruploads'
print(newuser.fileman_Setting.home)
newuser.save()
return HttpResponseRedirect('%scomplete/' % request.path_info)
else:
form = RegistrationForm()
template = "userprofile/account/registration.html"
data = { 'form': form, }
return render_to_response(template, data, context_instance=RequestContext(request))
应用程序在admin中有一个特性,允许用户在那里设置根文件夹和主文件夹。但我希望它在用户注册时自动发生。我得到的所有者很好,但是home和root仍然是'None',即使print(newuser.fileman_Setting.root)
是正确的。我错过了什么?你知道吗
文件管理员/管理员.py你知道吗
from django.contrib import admin
from fileman.models import *
class SettingAdmin(admin.ModelAdmin):
list_display = ('owner', 'root', 'home')
admin.site.register(Setting, SettingAdmin)
您还需要保存
newuser.fileman_Setting
,因为django不会自动保存对模型的更改。你知道吗我不知道
AutoForeignKey
是做什么的,但是假设它类似于标准的ForeignKey,相反的fileman_Setting
表示查询集。你知道吗ForeignKey是一对多关系,其中one是定义FK的一方,而反向关系(通过
related_name
中指定的名称访问)是many,因此由QuerySet表示。因此,您不是在单个设置上设置home和root字段,而是在QuerySet上定义任意属性,然后忽略这些属性。你知道吗不管怎样,听起来你可能想在这里建一个单间。一旦你做到了,那么正如德米特里说的,你需要记住保存它。你知道吗
相关问题 更多 >
编程相关推荐