我正在创建一个非常简单的待办事项列表应用程序。每个用户都应该有一个关联的待办事项列表页面,其中包含基本的CRUD功能。这意味着用户A 应该具有与用户B 不同的数据。
截至目前,谁拥有待办事项清单没有区别。登录的任何人都可以添加,删除,显示,删除任务。
我有一种直觉,我可能需要在我的模型和模板中添加额外的东西。我应该提一下,我使用的是Pinax 0.9a2。如果它做了我需要它做的事情,我宁愿使用那个解决方案。
这是我的models.py
class Task(models.Model):
name = models.CharField(max_length=100)
added_at = models.DateTimeField(auto_now_add=True)
last_update = models.DateTimeField(auto_now=True)
def __unicode__(self):
return self.name
以下是views.py
中的一个表单def task_create(request):
return create_object(request,
model=Task,
template_name='task_create.html',
post_save_redirect=reverse("todo_list")
)
这是我的两个模板:
待办事项制作
<form action="" method="post">{% csrf_token %}
{{ form.name }}
<button type="submit" class="btn primary">Create →</button>
</form>
待办事项列表
{% if task_list %}
<p><a href="{% url task_create %}">Create a task</a></p>
<ul>
{% for task in task_list %}
<li><a href="{% url task_detail task.id %}">{{ task.name }}</a></li>
{% endfor %}
</ul>
{% else %}
<p>No tasks to display, click to <a href="{% url task_create %}">create new</a>.</p>
{% endif %}
答案 0 :(得分:3)
所以你只想为它添加访问控制?
ForeignKey
添加到auth.User
到您的ToDos模型commit=False
提供save()
,为检索到的对象设置用户并手动保存代码:
class Task(models.Model):
user = models.ForeignKey('auth.User')
name = models.CharField(max_length=100)
added_at = models.DateTimeField(auto_now_add=True)
last_update = models.DateTimeField(auto_now=True)
class TaskForm(forms.ModelForm):
class Meta:
model = Task
exclude = ['user', ]
def task_create(request):
form = TaskForm(data=request.POST or None)
if request.method == 'POST' and form.is_valid():
task = form.save(commit=False)
task.user = request.user
task.save()
return reverse("todo_list")
return render(request,
'task_create.html',
{'form': form}
)
此外,在列表视图中按request.user
添加过滤,我建议使用@login_required
装饰器以避免未经授权的用户添加任务。