Django ManyToManyField错误"没有外键"通过关系

时间:2015-01-29 03:01:31

标签: django django-admin

我正在使用Django 1.7,而且我是第一次利用这种关系。首先,我想确保正确配置;在ManyToManyField高级关系建模的Django tutorial中,有从Group到Person的引用,而不是其他方式,所以我假设从Organization到Person的单向关系就足够了。

这是我的问题:

添加新组织时,我希望能够创建一个新人并同时从同一屏幕输入他们的属性;目前我只能从现有的Person对象中进行选择。

这怎么可能?

models.py

from django.db import models

class Person(models.Model):
     first_name = models.CharField(max_length=256)
     last_name = models.CharField(max_length=256)
     email = models.EmailField(null=True, blank=True)

class Organization(models.Model):
     root_domain = models.CharField(max_length=256)
     name = models.CharField(max_length=256)
     current_employees = models.ManyToManyField(
          Person,
          through='Employment',
          related_name='employees'
          )

class Employment(models.Model):
     person = models.ForeignKey(Person)
     organization = models.ForeignKey(Organization)
     date_start = models.DateField(auto_now_add=True)
     date_end = models.DateField(auto_now_add=True)

admin.py

from django.contrib import admin
from .models import Organization, Person    

class EmployeeInline(admin.TabularInline):
    model = Organization.current_employees.through
    extra = 1

class OrganizationAdmin(admin.ModelAdmin):
    search_fields = (
        'name',
        'investors',
        'description',
        'root_domain',
        )
    list_filter = (
        'updated',
        'entity_type',
        'hq_state',
        'hq_country',
        )
    inlines = [EmployeeInline]

1 个答案:

答案 0 :(得分:0)

也许您应该在就业模式中添加相关名称?

class Employment(models.Model):
    person = models.ForeignKey(Person, related_name="Rperson")
    organization = models.ForeignKey(Organization, related_name="Rorg")