django - 需要相关名称参数
问题描述
我收到了以下错误,我不确定如何在我的模型中处理这个错误。
HINT: Add or change a related_name argument to the definition for 'UserCart.state_tax' or 'UserCart.fed_tax'.
userorders.UserCart.state_tax: (fields.E304) Reverse accessor for 'UserCart.state_tax' clashes with reverse accessor for 'UserCart.other_tax'.
模型.py
class UserCart(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, default=None)
state_tax = models.ForeignKey(Tax, on_delete=models.SET_NULL, null=True)
fed_tax = models.ForeignKey(Tax, on_delete=models.SET_NULL, null=True)
解决方案
这是必要的,因为您有两个UserCart
对Tax
模型的引用。因此,这意味着反向关系(从Tax
到UserCart
)不能是usercart_set
,因为从那时起我们不清楚我们反向使用哪种关系。
因此,我们至少应该给其中一个关系起一个相关的名称(不同于usercart_set
)。例如:
from django.contrib.auth import get_user_model
class UserCart(models.Model):
user = models.ForeignKey(get_user_model(), on_delete=models.CASCADE, default=None)
state_tax = models.ForeignKey(
Tax,
related_name='state_usercarts',
on_delete=models.SET_NULL,
null=True
)
fed_tax = models.ForeignKey(
Tax,
related_name='fed_usercarts',
on_delete=models.SET_NULL,
null=True
)
注意:您可能希望使用
get_user_model
[Django-doc]而不是对User
自身的引用。如果您稍后更改用户模型,那么ForeignKey
将自动引用新的用户模型。
推荐阅读
- c# - Ajax 响应未在源代码中显示
- javascript - 等待 executeScript 完成
- django - mod_wsgi.Input 对象没有属性流错误
- django - 如何使用 redis 作为消息代理正确设置生产者 - 消费者方案并将结果存储在 postgresql / sqlite 中?
- python - 如何将熊猫数据框读入卡普兰迈尔曲线?
- node.js - 在 NodeJs 中刷新记录器对象的最佳方法是什么?
- go - Goland 自动格式化
- at-command - 如何在 Cell 调制解调器上接收小区广播消息?
- ios - Swift 模型未从 Firestore 读取数据
- phpstorm - 对文件进行版本控制以避免 PhpStorm 中的浏览器缓存