Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从视图中将值分配给新用户_Python_Django_Django Models_Django Admin_Django Views - Fatal编程技术网

Python 从视图中将值分配给新用户

Python 从视图中将值分配给新用户,python,django,django-models,django-admin,django-views,Python,Django,Django Models,Django Admin,Django Views,我有一个models.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 = AutoForeign

我有一个models.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/views.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\u Setting.root)
是正确的。我错过了什么

fileman/admin.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\u设置,因为django不会自动保存对模型的更改。

我不知道
AutoForeignKey
有什么作用,但假设它与标准ForeignKey类似,则反过来的
fileman\u设置
指的是查询集

ForeignKey是一对多关系,其中一是定义FK的一侧,而反向关系(通过
related_name
中指定的名称访问)是多,因此由查询集表示。因此,您不是在单个设置上设置home和root字段,而是在QuerySet上定义任意属性,然后忽略这些属性


无论如何,听起来你可能想要一个OneToOneField。完成后,正如Dmitry所说,您需要记住保存它。

正确格式化源代码-它不可读。谢谢,newuser。fileman_设置。save()工作正常。如何为使用相同类设置的新用户添加权限?通过admin或如本文所述,如何将设置类Meta中的权限分配给用户?