我尝试在Django admin中集成以下三个相关模型:
# models.py
class Seminar(models.Model):
title = models.CharField(max_length=128, unique=True)
start_date = models.DateField(db_index=True)
end_date = models.DateField(db_index=True)
class Event(models.Model):
title = models.CharField(max_length=128)
start_date = models.DateTimeField(db_index=True)
end_date = models.DateTimeField(db_index=True)
seminar = models.ForeignKey('Seminar')
class Registration(models.Model):
name = models.CharField(max_length=128)
first_name = models.CharField(max_length=128)
seminar = models.ForeignKey('Seminar')
events = models.ManyToManyField('Event', null=True)
# admin.py
class EventInline(admin.TabularInline):
model = Event
class SeminarAdmin(admin.ModelAdmin):
list_display = ('title', 'start_date', 'end_date')
inlines = [
EventInline,
]
class RegistrationAdmin(admin.ModelAdmin):
list_display = ('seminar', 'name', 'first_name')
如您所见,每个研讨会可能有多个事件,从Seminar
管理添加为内联条目。在
我的问题是注册,因为它们是:
当然,管理员会列出所有事件,而不是与研讨会相关的子集,因此:
Event
上的Registration
M2M是否合适,或者我应该以不同的方式将这两个模型关联起来?在谢谢!在
好吧,在问这个问题之前,我做了一些类似于Django的
auth.User
模型的工作,使用了不同的表单来添加/更改视图。我希望有更好的解决办法,显然不是。在下面是我所做的: 在
因此,添加时,我们只需忽略事件(注册与空事件一起保存),然后,在更改时,可以根据先前定义的研讨会选择一个事件列表,然后将其忽略(因为我们无法重新加载相关事件列表)。在
相关问题 更多 >
编程相关推荐