DJANGO:如何以形式而不是文字 "model object"呈现模型对象名称?

标签 django forms django-models many-to-many inline-formset

我有以下模型:部门、项目、部门项目、员工和成员资格。一个部门有许多项目,项目有许多通过成员身份分配角色的员工。我正在尝试创建一个 InlineFormset,以便 EU 可以将员工的角色分配给多个项目。

我的模板呈现正确的标签和字段,但 Departmentprojects 标签和字段不显示项目名称。它仅显示“Departmentprojects 对象”。如何获取表单来呈现项目名称而不是“Departmentprojects 对象”?

--

浏览器中的当前模板:

部门项目标签:(下拉菜单,其中两个选项列为“部门项目对象”) 职位:项目经理

浏览器中所需的模板:

部门项目名称1:项目经理

部门项目名称 2:其他角色

--

型号:

class Projects(models.Model):
    name = models.CharField(max_length=20)
    def __unicode__(self):
        return self.name

class Department(models.Model):
    name = models.CharField(max_length=20)
    def __unicode__(self):
        return self.name

class Employees(models.Model):
    name = models.CharField(max_length=15)
    def __unicode__(self):
        return self.name

class Departmentprojects(models.Model):
    department = models.ForeignKey(Department)
    projects = models.ForeignKey(Projects)
    members = models.ManyToManyField(Employees, through='Membership')

class Membership(models.Model):
    departmentprojects = models.ForeignKey(Departmentprojects)
    employees = models.ForeignKey(Employees)
    role = models.CharField(max_length=20)

--

查看

def addtoprojects(request, employees_id):
    e = get_object_or_404(Employees, pk=employees_id)
    ProjectsInlineFormSet = inlineformset_factory(Employees, Membership, max_num=1)
    if request.method == "POST":
        formset = ContactInlineFormSet(request.POST, instance=e)
        if formset.is_valid():
            formset.save()
    else:
        formset = ProjectsInlineFormSet(instance=e)
    return render_to_response('gcstest/contact.html', {'e': e, 'formset': formset}, context_instance=RequestContext(request))

--

模板

<form method="post" action="/assign_to_project/{{ employees.id }}/">
    {% csrf_token %}
    <table>
        {{ formset }}
    </table>
    <input type="submit" value="Submit"/>
</form>

最佳答案

添加__unicode__方法到您的 Departmentprojects 模型,例如

class Departmentprojects(models.Model):
    department = models.ForeignKey(Department)
    projects = models.ForeignKey(Projects)
    members = models.ManyToManyField(Employees, through='Membership')

    def __unicode__(self):
        return "%s > %s" % (self.department, self.projects)

关于DJANGO:如何以形式而不是文字 "model object"呈现模型对象名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9691028/

相关文章:

javascript - 停止 Symfony 表单提交后重定向

python - 当字段变化时如何调用类模型中的函数?

django - 如何为 Django 创建 ltree 数据类型?

python - Django Admin DateTimeField 显示 24 小时格式时间

Django 1.5.5 始终显示原始 (en) 字符串(不翻译)

python - 我无法在 Django 模板上显示图像

javascript - 在 React 中切换 View 时保留输入值

php - jQuery 提交表单两次

django - Windows 中的旋转文件处理程序 "Text File Busy"

django - Safari 中的 Html5 视频 - Django