【问题标题】:How to add a field many times in Django admin panel如何在 Django 管理面板中多次添加字段
【发布时间】:2020-10-17 09:06:37
【问题描述】:

在 Django 管理面板中多次添加字段的最佳方法是什么

我的意思是如何在管理面板中添加许多名称

我想添加很多名字,因为我有课程部分,我想添加第 1 课,然后给它 youtube 链接,然后添加第 2 课,然后给它 youtube 链接等

我在 models.py 中有这段代码:

from django.db import models

class Courses(models.Model):
    name = models.CharField(max_length=50,default="")

    def __str__(self):
        return self.name

结果我想要类似的东西

任何帮助

【问题讨论】:

  • 为什么要多次重复同一个名字???
  • 不是'同名重复很多次'我想添加很多名字,因为我有课程部分,我想添加第 1 课,然后给它 youtube 链接,然后添加第 2 课,然后给它 youtube 链接等..
  • 我认为你需要清楚你今天拥有什么,你尝试过什么,以及你想要的实际结果。就目前而言,这个问题太模糊了,无法尝试回答。请参阅此处获取指导:stackoverflow.com/help/how-to-ask
  • 我编辑了我的问题,请重新阅读
  • 您需要查看表单集。如果是一门课程的多个 URL,则为内联表单集。如果是一门课程,一个 URL,但您想在每页添加多个课程,那么只需一个模型表单集即可。

标签: django django-models django-admin


【解决方案1】:

所以你可能也有一个课程模型,看起来像这样:

class Lesson(models.Model):
    course = models.ForeignKey(Course, on_delete=models.CASCADE)
    name = models.CharField(max_length=50)
    youtube_url = models.URLField()

在这种情况下,您需要 Course 模型上的内联表单集,我们可以使用 inline admin

# admin.py
from django.contrib import admin
from .models import Course, Lesson

class InlineLessons(admin.StackedInline):
    model = Lesson


class CourseAdmin(admin.ModelAdmin):
    inlines = [ InlineLessons ]

admin.site.register(Lesson)  # Needed for permissions
admin.site.register(Course, CourseAdmin)

现在去管理中的一门课程,你可以在它下面添加许多课程。

【讨论】:

  • 感谢重播,您的回答对我有所帮助,但我如何将课程 + 课程模型中的数据传递到一个 html 页面中,我在 views.py 中有此代码,如何添加课程? def course_posts(request,slug): course_posts = get_object_or_404(Course, slug=slug) context = {'course_posts':course_posts} return render(request,'course/course_posts_page.html', { 'course_posts': course_posts })
  • 还有如何将数据传递到html页面
  • 你已经为此创建了一个新问题,这是我要建议的,因为这两者是不相关的。
  • 是的,非常感谢您的帮助,这是我的新答案stackoverflow.com/questions/64402016/…
猜你喜欢
  • 1970-01-01
  • 2016-09-13
  • 2021-06-20
  • 1970-01-01
  • 2012-05-04
  • 1970-01-01
  • 1970-01-01
  • 2015-11-13
  • 2020-06-10
相关资源
最近更新 更多