やあ。次の質問を読んだ後、この質問をしています:Question_1とQuestion_2。Question_1には適切な回答がなく、Question_2には代替ソリューションがありますが、完全なソリューションではありません。
ここに2つのモデルとそれらの管理者がいます。
models.py
class TaskList(models.Model):
task_name = models.CharField(max_length = 255, unique = True)
description = models.TextField()
assignee_role = models.ForeignKey(Group, related_name = "assignee_roles")
assignee_name = models.ForeignKey(User, related_name = "assignee_names")
def __unicode__(self):
return "%s" % (self.task_name)
class TaskComments(models.Model):
tasklist = models.ForeignKey(TaskList)
time = models.DateTimeField(null = True, blank = True)
comment = models.TextField()
def __unicode__(self):
return ""
def save(self, *args, **kwargs):
self.time = datetime.datetime.now()
super(TaskComments, self).save(*args, **kwargs)
admin.py
class TaskCommentsInlineAdmin(admin.TabularInline):
model = TaskComments
can_delete = False
class TaskListAdmin(admin.ModelAdmin):
inlines = [TaskCommentsInlineAdmin, ]
def add_view(self, request, form_url = '', extra_context = None):
self.readonly_fields = ()
return super(TaskListAdmin, self).add_view(request, form_url, extra_context)
def change_view(self, request, form_url = '', extra_context = None):
self.readonly_fields = ('task_name', 'description', )
return super(TaskListAdmin, self).change_view(request, form_url, extra_context)
ここでは、モデルTaskCommentsがTaskListでインラインとして使用されています。
シナリオ1
ここで私が達成したいのは:
タスクコメントを追加する場合
- フィールド「time」を非表示にして、バックエンドで更新します。
- 「コメント」と入力して保存できます。
コメントを保存して開くとき
- 「時間」フィールドと「コメント」フィールドの両方が表示され、すでに追加されたコメントに対して読み取り専用である必要があります。
- 上記のように新しいコメントを追加することができます。
シナリオ2
- 前のシナリオと同じです。
- 唯一の追加は、コメントを追加したユーザーはコメントを編集可能にし、他のすべてのユーザーは読み取り専用にする必要があることです。(コメントを追加したユーザーを更新して取得できます)。
これらは私が達成したいことです。adminでadd_viewとchange_viewを使用してみました。しかし、彼らはインラインで働いていません。これらを実現するためのソリューションを提供してください。前もって感謝します。