[related_name参数必需

问题描述 投票:1回答:1

我已经收到以下错误,并且不确定在模型中如何处理。

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'.

models.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)
django django-models
1个回答
1
投票

这是必要的,因为您有从UserCartTax模型的two引用。因此,这意味着反向关系(从TaxUserCart)不能为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
    )

Note:您可能想通过get_user_model [Django-doc]本身来使用get_user_model。如果以后更改用户模型,则User将自动引用新的用户模型。

© www.soinside.com 2019 - 2024. All rights reserved.