kal*_*kal 7 python django model one-to-many
我想创建一个简约的任务管理应用程序来学习Django的基础知识.因此,项目,任务和用户将成为三大实体.
我无法弄清楚如何从项目中做多对一 - >用户django.contrib.auth.models.User作为我的用户来源.
这是我到目前为止所做的,但我知道这是错误的,我无法绕过它.我尝试与其他问题相关,例如Contestents和StackOverflow上的漏洞URLS.我不确定是否必须编写自己的用户模型,或以某种方式扩展它.
class Project(models.Model):
Project_Name = models.CharField(max_length=100)
Project_Users = models.ManyToManyField(User)
class Tasks(models.Model):
Task_Name = models.CharField(max_length=300)
Task_AssignedToUser = models.ForeignKey("Project_Name", through=Users)
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助.
class Project(models.Model):
name = models.CharField(max_length=100)
users = models.ManyToManyField(User)
class Task(models.Model):
project = models.ForeignKey(Project, related_name='project_tasks')
name = models.CharField(max_length=300)
assignee = models.ForeignKey(User, related_name='tasks')
Run Code Online (Sandbox Code Playgroud)
获取参与特定项目的用户:
p = Project.objects.get(name='myproject')
users = p.users.all()
Run Code Online (Sandbox Code Playgroud)
获得项目的任务:
users = p.project_tasks.all() # Because of `related_name` in Task.project
Run Code Online (Sandbox Code Playgroud)
获取用户拥有的所有项目的所有任务:
u = User.objects.get(username='someuser')
u.tasks.all() # Because of `related_name` in Task.assignee
Run Code Online (Sandbox Code Playgroud)
笔记:
A ForeignKey是多对一的关系.例如,一个任务只属于一个项目 - 一个项目可以有很多任务.
您不需要多余的字段名称.name比...更好Project_Name
一次一个问题.
| 归档时间: |
|
| 查看次数: |
2054 次 |
| 最近记录: |