我有两种模式:
class Division(models.Model):
DIVISIONS = (
(u'D1', u'Division1'),
(u'D2', u'Division2'),
(u'D3', u'Division3'),
)
division = models.CharField(max_length=3, choices=DIVISIONS)
created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True)
def __unicode__(self):
return self.division
class Player(models.Model):
name = models.TextField()
code = models.CharField(max_length=6)
division = models.ForeignKey(Division)
created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True)
def __unicode__(self):
return self.name
有没有办法在分区内编辑所有玩家?我已经尝试在Division中添加ManyToMany字段,但似乎没有正确链接这两个模型。来自2009的这个问题点击了我正在努力实现的目标...是否有一种更简单,更现代的方式来编辑群组中的群组成员资格以及成员?
答案 0 :(得分:1)
您可以使用InlineModelAdmin objects,尤其是TabularInline对象。下面的示例代码将允许您编辑属于特定部门的玩家列表。
# admin.py
from django.contrib import admin
class PlayerInline(admin.TabularInline):
model = Player
class DivisionAdmin(admin.ModelAdmin):
inlines = [
PlayerInline,
]
至于能否从播放器模型编辑分区,您应该已经能够这样做,除非您从可编辑字段列表中删除它。如果您打算将其更改为ManyToManyField,则需要创建through model(例如成员资格)并创建如此的内联:
# admin.py
from django.contrib import admin
class MembershipInline(admin.TabularInline):
model = Membership
class DivisionAdmin(admin.ModelAdmin):
inlines = [
MembershipInline,
]
class PlayerAdmin(admin.ModelAdmin):
inlines = [
MembershipInline,
]