【发布时间】:2019-06-15 11:34:48
【问题描述】:
我是 Django 和 Python 的新手。假设我正在构建一个应用程序来管理公司用户使用的设备。我有多家公司,每个公司都有多个用户和房间。
房间和用户始终与公司相关联。
设备可以链接到:
- 用户(“Joe 的 iPhone”、“Anna 的笔记本电脑”)
- 一个房间(“会议室的电脑”)
设备始终与公司相关联。
所以,我可以拥有一个仅与公司关联的设备。
这是我的代码:
models.py:
class Company(models.Model):
name=models.CharField(max_length=50)
class User(models.Model):
name=models.CharField(max_length=50)
company=models.ForeignKey('Company', on_delete=models.CASCADE)
class Room(models.Model):
name=models.CharField(max_length=50)
company=models.ForeignKey('Company', on_delete=models.CASCADE)
class Device(models.Model):
company=models.ForeignKey('Company', on_delete=models.CASCADE)
user=models.ForeignKey('User', on_delete=models.CASCADE, blank=True, null=True)
room=models.ForeignKey('Room', on_delete=models.CASCADE, blank=True, null=True)
admin.py:
class DevicesInline(admin.TabularInline):
model = Device
extra = 0
def formfield_for_foreignkey(self, db_field, request=None, **kwargs):
if db_field == "Company":
kwargs['queryset'] = ## Here I don't know ##
return super().formfield_for_foreignkey(db_field, request, **kwargs)
class UserAdmin(admin.ModelAdmin):
inlines = [DeviceInline]
我想要的非常简单:当我编辑用户(或房间)时,我希望能够为其添加设备。但是Company字段必须填写用户或房间的公司,并且不能修改。就是这样:)
PS:如果设备已经链接到用户或房间,我不知道是否需要链接到公司?那完全是另一个问题。
【问题讨论】:
标签: django