Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.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
Django:将初始值分配给ModelAdmin子类中表单的字段_Django_Forms_Django Forms_Django Admin - Fatal编程技术网

Django:将初始值分配给ModelAdmin子类中表单的字段

Django:将初始值分配给ModelAdmin子类中表单的字段,django,forms,django-forms,django-admin,Django,Forms,Django Forms,Django Admin,我不知道当表单通过管理应用程序呈现给用户时,如何为表单中的字段赋值。我试图做的是向用户呈现一个表单,其中名为user的字段已经赋值,如果可能,该字段已被禁用(无法更改) 以下是我的模型 class modelStudent(models.Model): class Meta: verbose_name_plural = "Enrolled Students" #Name to display in admin interface user = models.On

我不知道当表单通过管理应用程序呈现给用户时,如何为表单中的字段赋值。我试图做的是向用户呈现一个表单,其中名为user的字段已经赋值,如果可能,该字段已被禁用(无法更改)

以下是我的模型

class modelStudent(models.Model):
    class Meta:
        verbose_name_plural = "Enrolled Students"  #Name to display in admin interface
    user = models.OneToOneField(User, on_delete=models.CASCADE,null=True, blank=True)
    school           = models.ForeignKey(modelSchool)
    first_name       = models.CharField(max_length=128, unique=False)
    student_email    = models.EmailField(unique=True, blank=False)

class modelStudentAdminForm(forms.ModelForm):
    class Meta:
        model = modelStudent
        exclude = ['student_email']
现在这是admin表单的admin类

class modelStudentAdmin(admin.ModelAdmin):
form = modelStudentAdminForm
#Only display students that belong to this user

def get_queryset(self, request):
    qs = super(modelStudentAdmin, self).get_queryset(request)

    if request.user.is_superuser:
        return qs
    else:
        # Get the school instance
        schoolInstance = modelSchool.objects.get(user=request.user)
        qs = modelStudent.objects.filter(school=schoolInstance)
        return qs

def get_form(self, request, obj=None, **kwargs):
    #modelStudentAdmin.form.initial={"first_name":"JoeJoe"}
    return modelStudentAdmin.form

 def formfield_for_foreignkey(self, db_field, request=None, **kwargs):
        if db_field.name == 'user':
            kwargs['queryset'] =  modelStudent.objects.filter(user=request.user)
        return super(modelStudentAdmin,self).formfield_for_foreignkey(db_field, request, **kwargs)
在这种情况下,它说

'NoneType' object does not support item assignment
我已尝试为表单字段指定值,但无法执行此操作。 所以我的问题是,如何在表单中将字段标记为只读并指定初始值?我想对
user
下拉字段执行此操作,并为first\u name指定一个初始值

更新:

我还实施了上述方法(以限制外键选项)


但是,这不会被调用。

您是否已经像这样尝试过?我使用了
def formfield\u作为\u foreignkey
而它没有被调用关于
def formfield\u作为\u foreignkey(self,db\u字段,request,**kwargs):
,因为在您的例子中,
request
字段填充了
None
request=None
。。。也许这就是原因。。
def formfield_for_foreignkey(self, db_field, request=None, **kwargs):