管理员外部的Django管理页面

时间:2018-07-15 11:51:49

标签: django django-forms django-admin

这可能是一个简单的Django问题,但我希望我可以得到som建议。 admin.py中的以下代码

class ExarbeteMomentInline(admin.TabularInline):
    model = ExarbeteMoment
    extra=0

class ExarbeteStudent(admin.TabularInline):
    model = ExarbeteStudent
    extra=0


class ExamensarbeteAdmin(admin.ModelAdmin):
     list_display = ('title', 'start_date', 'end_date', 'company')
     inlines = [ExarbeteMomentInline, ExarbeteStudent]

admin.site.register(Examensarbete,ExamensarbeteAdmin)

在管理面板中生成我想要的内容。

但是我想要在管理面板之外安装它的版本,以便普通用户可以输入数据。如何以最小的方式修改代码,以便在管理区域之外获得基本相同的页面?

谢谢。

/ 添加 / 我的模型是:

class Examensarbete(models.Model):
    title = models.CharField(max_length=10000,default='',blank=True)
    start_date = models.DateField('startdatum')
    end_date = models.DateField('slutdatum',blank=True,default='',null=True)
    company = models.CharField(max_length=200,default='',blank=True)
    comment = models.TextField(max_length=1000,default='',blank=True)
    kurskod = models.CharField(max_length=100,default='FMAM05')
    year = models.CharField(max_length=5,blank=True,default='',null=True)

 class ExarbeteMoment(models.Model):
    exarbete = models.ForeignKey(Examensarbete,on_delete=models.CASCADE)
    typ = models.CharField(max_length=100)
    person = models.ForeignKey(Personal,on_delete=models.SET_NULL,null=True)
    tim = models.FloatField(null=True)

class ExarbeteStudent(models.Model):
    exarbete = models.ForeignKey(Examensarbete,on_delete=models.CASCADE)
    first_name=models.CharField(max_length=100)
    last_name=models.CharField(max_length=100)
    pnr = models.CharField(max_length=13)
    program = models.CharField(max_length=5)
    kull = models.CharField(max_length=5)

我删除了str和Meta。我想我应该可以通过下面的帮助解决问题,但是我仍然无法弄清楚如何从管理面板中得到我的东西,上面是Examensarbete,然后是两个子窗体,分别是ExarbeteMoment和ExarbeteStudent。还有“添加其他项目”功能。

不幸的是,我是Django的新手,并且发现使用表单和表单集特别困难。我不太清楚为什么,因为它们应该大大简化事情。

1 个答案:

答案 0 :(得分:0)

我同意Roman Kovalevsky的评论-您需要自己编写函数。 Django会通过表单和表单集来支持您完成这项工作。因为您没有在问题中发布模型,所以我只能为您显示一个带有一些随机命名变量的示例:

restfulendpoint.go

然后为内联模型创建一个表单集,如下所示:

class ExarbeteStudent(forms.Form):
    description = forms.CharField(widget=AdminTextareaWidget)
    date1 = forms.DateField(widget=AdminDateWidget)
    date2 = forms.DateField(widget=AdminDateWidget)
    task_list = Task.objects.all()

在这里您可以找到有关表单和表单集的更多信息

https://docs.djangoproject.com/en/2.0/topics/forms/formsets/