【发布时间】:2010-12-27 11:30:57
【问题描述】:
我认为我对 Django 的 FK 和 admin 的理解有点错误,所以我会重视有关如何为以下案例建模的任何意见。
首先,我们有通用的 Address 对象。然后,我们有用户,每个人都有一个 UserProfile。这样,用户就属于部门,也有地址。
部门本身也可以有多个地址,以及一个部门负责人。所以它可能是这样的(这是我现在正在破解的东西):
class Address(models.Model):
street_address = models.CharField(max_length=20)
etc...
class Department(models.Model):
name = models.CharField(max_lenght=20)
head_of_department = models.OneToOneField(User)
address = models.ForeignKey(Address)
class UserProfile(models.Model):
user = models.ForeignKey(User, unique=True)
address = models.ForeignKey(Address)
department = models.OneToOneField(Department)
无论如何,首先,这是建立关系的正确方式吗?
其次,我希望它出现在管理员中,您可以编辑一个部门,并且在该页面上,它会有一个包含所有地址的内联列表也可以编辑。我尝试设置一个 AddressInline 类,并将其作为内联附加到 Department。
class AddressInline(admin.TabularInline):
model = Address
class DepartmentAdmin(admin.ModelAdmin):
inlines = [AddressInline]
但是,当我尝试显示它时,我得到:
Exception at /admin/people/department/1/
<class 'people.models.Address'> has no ForeignKey to <class 'people.models.Department'>
干杯, 维克多
【问题讨论】:
-
您需要使用
ManyToManyField作为 Department 和 UserProfile 类的地址。 -
Celopes:感谢您指出这一点,已经回去接受旧的了。我没有意识到我必须同时投票和接受......哈哈。
标签: database django database-design