django-models - 我可以多次使用同一个外键吗?
问题描述
我有一张客户表和一张活动表。客户端是事件表中的 FK。用户将选择他们在特定日期所在的客户。我希望我的事件表具有星期日、星期一、.....、星期六的字段,因此用户只需从下拉列表中选择一个客户。
我试过像这样设置我的模型,但在尝试迁移时它不起作用:
class Client(models.Model):
name = models.CharField(max_length=50)
class Event(models.Model):
week = models.DateField(blank=False)
sunday = models.ForeignKey(Client, on_delete=models.CASCADE)
monday = models.ForeignKey(Client, on_delete=models.CASCADE)
tuesday = models.ForeignKey(Client, on_delete=models.CASCADE)
wednesday = models.ForeignKey(Client, on_delete=models.CASCADE)
thursday = models.ForeignKey(Client, on_delete=models.CASCADE)
friday= models.ForeignKey(Client, on_delete=models.CASCADE)
saturday = models.ForeignKey(Client, on_delete=models.CASCADE)
我知道这种允许选择的方式为例:
position = models.CharField(max_length=20, choices=POS_CHOICES)
但我想使用我的表“客户端”中的选择,而不是对选择进行硬编码。
解决方案
只需要使用“related_name”:
class Event(models.Model):
week = models.DateField(blank=False)
sunday = models.ForeignKey(Client, on_delete=models.CASCADE, related_name='sunday', null=True)
monday = models.ForeignKey(Client, on_delete=models.CASCADE, related_name='monday', default=0)
tuesday = models.ForeignKey(Client, on_delete=models.CASCADE, related_name='tuesday', default=0)
wednesday = models.ForeignKey(Client, on_delete=models.CASCADE, related_name='wednesday', default=0)
thursday = models.ForeignKey(Client, on_delete=models.CASCADE, related_name='thursday', default=0)
friday = models.ForeignKey(Client, on_delete=models.CASCADE, related_name='friday', default=0)
saturday = models.ForeignKey(Client, on_delete=models.CASCADE, related_name='saturday', null=True)
推荐阅读
- swift - 执行异步云函数的问题
- reactjs - 用于构建的 React 应用的 App Engine app.yaml 处理程序
- android - 我们可以在底部 Appbar 中实现折叠工具栏的行为吗?
- regex - 如何使用正则表达式提取器从jmeter中的响应中提取值
- c++11 - 在 C++ 中进行方法链接时如何避免复制
- javascript - 找到SVG路径的方向
- url-routing - 调用 api url 后显示进度消息
- python - 调用使用 PyInstaller (包括 PyQt4)制作的 .exe 时出现运行时错误
- ios - CoreData:performBackgroundTask 和 newBackgroundContext() 有什么区别?
- ruby - Ruby 请求标头,还有一个 ?tag=tag